summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2012-03-05 13:06:29 +0000
committerMaxim Dounin <mdounin@mdounin.ru>2012-03-05 13:06:29 +0000
commit2d3fff0c5e1adb67991f6ca716e8bec42b2e61a7 (patch)
treeae4c2e2515df26f6017b6a4055a6592b704ed983
parent031458770a48be9b0bf5534c70abfc8284f135d7 (diff)
downloadnginx-2d3fff0c5e1adb67991f6ca716e8bec42b2e61a7.tar.gz
Merge of r4497:
Fixed null pointer dereference in resolver (ticket #91). The cycle->new_log.file may not be set before config parsing finished if there are no error_log directive defined at global level. Fix is to copy it after config parsing. Patch by Roman Arutyunyan.
-rw-r--r--src/core/ngx_resolver.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/core/ngx_resolver.c b/src/core/ngx_resolver.c
index 7291a1c5d..7e77b191a 100644
--- a/src/core/ngx_resolver.c
+++ b/src/core/ngx_resolver.c
@@ -152,11 +152,6 @@ ngx_resolver_create(ngx_conf_t *cf, ngx_addr_t *addr)
uc->sockaddr = addr->sockaddr;
uc->socklen = addr->socklen;
uc->server = addr->name;
-
- uc->log = cf->cycle->new_log;
- uc->log.handler = ngx_resolver_log_error;
- uc->log.data = uc;
- uc->log.action = "resolving";
}
return r;
@@ -830,6 +825,12 @@ ngx_resolver_send_query(ngx_resolver_t *r, ngx_resolver_node_t *rn)
uc = r->udp_connection;
if (uc->connection == NULL) {
+
+ uc->log = *r->log;
+ uc->log.handler = ngx_resolver_log_error;
+ uc->log.data = uc;
+ uc->log.action = "resolving";
+
if (ngx_udp_connect(uc) != NGX_OK) {
return NGX_ERROR;
}