]> git.kaiwu.me - nginx.git/commitdiff
fix reverse resolving cache: it stored zero length names
authorIgor Sysoev <igor@sysoev.ru>
Thu, 29 Jan 2009 14:29:49 +0000 (14:29 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Thu, 29 Jan 2009 14:29:49 +0000 (14:29 +0000)
*) free name only if it has been already allocated
*) store name length

src/core/ngx_resolver.c

index 05b44c7719ae36be98421cd0695ef8fafdc19843..ce94201347fc6dda313fb5a929dd845af1b1210b 100644 (file)
@@ -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);