]> git.kaiwu.me - nginx.git/commitdiff
fix r3225 and r3227: preserve default_server bit during listen options
authorIgor Sysoev <igor@sysoev.ru>
Thu, 22 Oct 2009 10:17:54 +0000 (10:17 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Thu, 22 Oct 2009 10:17:54 +0000 (10:17 +0000)
overwriting

src/http/ngx_http.c

index cf47c23d93f2c50b35c60bedaa330c47c7113e0e..455a519dea8daa04c2c650c2eadf714c50db002c 100644 (file)
@@ -1167,7 +1167,7 @@ ngx_http_add_addresses(ngx_conf_t *cf, ngx_http_core_srv_conf_t *cscf,
 {
     u_char                *p;
     size_t                 len, off;
-    ngx_uint_t             i;
+    ngx_uint_t             i, default_server;
     struct sockaddr       *sa;
     ngx_http_conf_addr_t  *addr;
 
@@ -1209,6 +1209,9 @@ ngx_http_add_addresses(ngx_conf_t *cf, ngx_http_core_srv_conf_t *cscf,
             return NGX_ERROR;
         }
 
+        /* preserve default_server bit during listen options overwriting */
+        default_server = addr[i].opt.default_server;
+
         if (lsopt->set) {
 
             if (addr[i].opt.set) {
@@ -1224,15 +1227,18 @@ ngx_http_add_addresses(ngx_conf_t *cf, ngx_http_core_srv_conf_t *cscf,
 
         if (lsopt->default_server) {
 
-            if (addr[i].opt.default_server) {
+            if (default_server) {
                 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
                         "a duplicate default server for %s", addr[i].opt.addr);
                 return NGX_ERROR;
             }
 
+            default_server = 1;
             addr[i].default_server = cscf;
         }
 
+        addr[i].opt.default_server = default_server;
+
         return NGX_OK;
     }