fix r3225 and r3227: preserve default_server bit during listen options
overwriting
diff --git a/src/http/ngx_http.c b/src/http/ngx_http.c
index cf47c23..455a519 100644
--- a/src/http/ngx_http.c
+++ b/src/http/ngx_http.c
@@ -1167,7 +1167,7 @@
 {
     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 @@
             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 @@
 
         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;
     }