summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2009-01-29 14:29:49 +0000
committerIgor Sysoev <igor@sysoev.ru>2009-01-29 14:29:49 +0000
commit8629b9b27ee44a3c9b327a32ad3c15735da83866 (patch)
treeb975ec4ede17c5cc6fa44855a7c9ef605a1b0874
parent67392e805461ae4d599eea5e1b686147792d4e88 (diff)
downloadnginx-8629b9b27ee44a3c9b327a32ad3c15735da83866.tar.gz
nginx-8629b9b27ee44a3c9b327a32ad3c15735da83866.tar.bz2
fix reverse resolving cache: it stored zero length names
*) free name only if it has been already allocated *) store name length
-rw-r--r--src/core/ngx_resolver.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/core/ngx_resolver.c b/src/core/ngx_resolver.c
index 05b44c771..ce9420134 100644
--- a/src/core/ngx_resolver.c
+++ b/src/core/ngx_resolver.c
@@ -1523,7 +1523,11 @@ ngx_resolver_process_ptr(ngx_resolver_t *r, u_char *buf, size_t n,
if (len != (size_t) rn->nlen || ngx_strncmp(name.data, rn->name, len) != 0)
{
- ngx_resolver_free(r, rn->name);
+ if (rn->nlen) {
+ ngx_resolver_free(r, rn->name);
+ }
+
+ rn->nlen = len;
rn->name = name.data;
name.data = ngx_resolver_dup(r, rn->name, len);