]> git.kaiwu.me - nginx.git/commitdiff
create dummy resolver in http context to inherit it in all servers
authorIgor Sysoev <igor@sysoev.ru>
Thu, 6 Mar 2008 08:48:55 +0000 (08:48 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Thu, 6 Mar 2008 08:48:55 +0000 (08:48 +0000)
src/http/ngx_http_core_module.c

index 2283889e4ab1d282c5d202a17d785df640c79bc5..7f82d065d34ba297de404fe57a2626c82470614e 100644 (file)
@@ -2908,14 +2908,21 @@ ngx_http_core_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
                               prev->resolver_timeout, 30000);
 
     if (conf->resolver == NULL) {
-        conf->resolver = prev->resolver;
 
-        if (conf->resolver == NULL) {
-            conf->resolver = ngx_resolver_create(cf, NULL);
-            if (conf->resolver == NULL) {
+        if (prev->resolver == NULL) {
+
+            /*
+             * create dummy resolver in http {} context
+             * to inherit it in all servers
+             */
+
+            prev->resolver = ngx_resolver_create(cf, NULL);
+            if (prev->resolver == NULL) {
                 return NGX_CONF_ERROR;
             }
         }
+        conf->resolver = prev->resolver;
     }
 
     ngx_conf_merge_path_value(conf->client_body_temp_path,
@@ -3717,6 +3724,10 @@ ngx_http_core_resolver(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
     ngx_url_t   u;
     ngx_str_t  *value;
 
+    if (clcf->resolver) {
+        return "is duplicate";
+    }
+
     value = cf->args->elts;
 
     ngx_memzero(&u, sizeof(ngx_url_t));