Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nginx/nginx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2007-12-03 13:05:19 +0300
committerIgor Sysoev <igor@sysoev.ru>2007-12-03 13:05:19 +0300
commit6b2fce430b4cdb063b5b4e5382515d384c90272b (patch)
treeb96e96db97ccb66acfc5aba3a4e1734df1c0b39d /src/core
parent26aae392f9fd35c840bf8e400b7f4defacf181ab (diff)
allow to use IP addresses without defined resolver
Diffstat (limited to 'src/core')
-rw-r--r--src/core/ngx_resolver.c28
-rw-r--r--src/core/ngx_resolver.h3
2 files changed, 20 insertions, 11 deletions
diff --git a/src/core/ngx_resolver.c b/src/core/ngx_resolver.c
index 045ded702..94d729c58 100644
--- a/src/core/ngx_resolver.c
+++ b/src/core/ngx_resolver.c
@@ -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;
- uc->sockaddr = addr->sockaddr;
- uc->socklen = addr->socklen;
- uc->server = addr->name;
- uc->log = log;
+ 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) {
diff --git a/src/core/ngx_resolver.h b/src/core/ngx_resolver.h
index e69f42087..b1b8ede2c 100644
--- a/src/core/ngx_resolver.h
+++ b/src/core/ngx_resolver.h
@@ -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;