diff options
author | Maxim Dounin <mdounin@mdounin.ru> | 2012-03-05 13:06:29 +0000 |
---|---|---|
committer | Maxim Dounin <mdounin@mdounin.ru> | 2012-03-05 13:06:29 +0000 |
commit | 2d3fff0c5e1adb67991f6ca716e8bec42b2e61a7 (patch) | |
tree | ae4c2e2515df26f6017b6a4055a6592b704ed983 | |
parent | 031458770a48be9b0bf5534c70abfc8284f135d7 (diff) | |
download | nginx-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.c | 11 |
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; } |