mirror of
https://github.com/nginx/nginx.git
synced 2024-12-12 18:29:00 +08:00
allow to use IP addresses without defined resolver
This commit is contained in:
parent
26aae392f9
commit
6b2fce430b
@ -99,11 +99,6 @@ ngx_resolver_create(ngx_peer_addr_t *addr, ngx_log_t *log)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
uc = ngx_calloc(sizeof(ngx_udp_connection_t), log);
|
||||
if (uc == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
r->event = ngx_calloc(sizeof(ngx_event_t), log);
|
||||
if (r->event == NULL) {
|
||||
return NULL;
|
||||
@ -138,8 +133,6 @@ ngx_resolver_create(ngx_peer_addr_t *addr, ngx_log_t *log)
|
||||
r->event->log = log;
|
||||
r->ident = -1;
|
||||
|
||||
r->udp_connection = uc;
|
||||
|
||||
r->resend_timeout = 5;
|
||||
r->expire = 30;
|
||||
r->valid = 300;
|
||||
@ -147,10 +140,19 @@ ngx_resolver_create(ngx_peer_addr_t *addr, ngx_log_t *log)
|
||||
r->log = log;
|
||||
r->log_level = NGX_LOG_ALERT;
|
||||
|
||||
if (addr) {
|
||||
uc = ngx_calloc(sizeof(ngx_udp_connection_t), log);
|
||||
if (uc == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
r->udp_connection = uc;
|
||||
|
||||
uc->sockaddr = addr->sockaddr;
|
||||
uc->socklen = addr->socklen;
|
||||
uc->server = addr->name;
|
||||
uc->log = log;
|
||||
}
|
||||
|
||||
return r;
|
||||
}
|
||||
@ -177,6 +179,10 @@ ngx_resolve_start(ngx_resolver_t *r, ngx_resolver_ctx_t *temp)
|
||||
}
|
||||
}
|
||||
|
||||
if (r->udp_connection == NULL) {
|
||||
return NGX_NO_RESOLVER;
|
||||
}
|
||||
|
||||
ctx = ngx_resolver_calloc(r, sizeof(ngx_resolver_ctx_t));
|
||||
|
||||
if (ctx) {
|
||||
|
@ -26,6 +26,9 @@
|
||||
#define NGX_RESOLVE_TIMEDOUT NGX_ETIMEDOUT
|
||||
|
||||
|
||||
#define NGX_NO_RESOLVER (void *) -1
|
||||
|
||||
|
||||
typedef struct {
|
||||
ngx_connection_t *connection;
|
||||
struct sockaddr *sockaddr;
|
||||
|
@ -2594,6 +2594,13 @@ ngx_http_core_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
|
||||
|
||||
if (conf->resolver == NULL) {
|
||||
conf->resolver = prev->resolver;
|
||||
|
||||
if (conf->resolver == NULL) {
|
||||
conf->resolver = ngx_resolver_create(NULL, cf->cycle->new_log);
|
||||
if (conf->resolver == NULL) {
|
||||
return NGX_OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ngx_conf_merge_path_value(conf->client_body_temp_path,
|
||||
|
@ -398,13 +398,6 @@ ngx_http_upstream_init(ngx_http_request_t *r)
|
||||
}
|
||||
}
|
||||
|
||||
if (clcf->resolver == NULL) {
|
||||
ngx_log_error(NGX_LOG_ERR, c->log, 0,
|
||||
"no resolver defined to resolve %V", host);
|
||||
ngx_http_finalize_request(r, NGX_HTTP_BAD_GATEWAY);
|
||||
return;
|
||||
}
|
||||
|
||||
temp.name = *host;
|
||||
|
||||
ctx = ngx_resolve_start(clcf->resolver, &temp);
|
||||
@ -413,6 +406,14 @@ ngx_http_upstream_init(ngx_http_request_t *r)
|
||||
return;
|
||||
}
|
||||
|
||||
if (ctx == NGX_NO_RESOLVER) {
|
||||
ngx_log_error(NGX_LOG_ERR, c->log, 0,
|
||||
"no resolver defined to resolve %V", host);
|
||||
|
||||
ngx_http_finalize_request(r, NGX_HTTP_BAD_GATEWAY);
|
||||
return;
|
||||
}
|
||||
|
||||
ctx->name = *host;
|
||||
ctx->type = NGX_RESOLVE_A;
|
||||
ctx->handler = ngx_http_upstream_resolve_handler;
|
||||
|
Loading…
Reference in New Issue
Block a user