diff --git a/src/core/ngx_resolver.c b/src/core/ngx_resolver.c
index 045ded7..94d729c 100644
--- a/src/core/ngx_resolver.c
+++ b/src/core/ngx_resolver.c
@@ -99,11 +99,6 @@
         return NULL;
     }
 
-    uc = ngx_calloc(sizeof(ngx_udp_connection_t), log);
-    if (uc == NULL) {
-        return NULL;
-    }
-
     r->event = ngx_calloc(sizeof(ngx_event_t), log);
     if (r->event == NULL) {
         return NULL;
@@ -138,8 +133,6 @@
     r->event->log = log;
     r->ident = -1;
 
-    r->udp_connection = uc;
-
     r->resend_timeout = 5;
     r->expire = 30;
     r->valid = 300;
@@ -147,10 +140,19 @@
     r->log = log;
     r->log_level = NGX_LOG_ALERT;
 
-    uc->sockaddr = addr->sockaddr;
-    uc->socklen = addr->socklen;
-    uc->server = addr->name;
-    uc->log = log;
+    if (addr) {
+        uc = ngx_calloc(sizeof(ngx_udp_connection_t), log);
+        if (uc == NULL) {
+            return NULL;
+        }
+
+        r->udp_connection = uc;
+
+        uc->sockaddr = addr->sockaddr;
+        uc->socklen = addr->socklen;
+        uc->server = addr->name;
+        uc->log = log;
+    }
 
     return r;
 }
@@ -177,6 +179,10 @@
         }
     }
 
+    if (r->udp_connection == NULL) {
+        return NGX_NO_RESOLVER;
+    }
+
     ctx = ngx_resolver_calloc(r, sizeof(ngx_resolver_ctx_t));
 
     if (ctx) {
diff --git a/src/core/ngx_resolver.h b/src/core/ngx_resolver.h
index e69f420..b1b8ede 100644
--- a/src/core/ngx_resolver.h
+++ b/src/core/ngx_resolver.h
@@ -26,6 +26,9 @@
 #define NGX_RESOLVE_TIMEDOUT  NGX_ETIMEDOUT
 
 
+#define NGX_NO_RESOLVER       (void *) -1
+
+
 typedef struct {
     ngx_connection_t         *connection;
     struct sockaddr          *sockaddr;
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index fea5cb5..b882f1c 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -2594,6 +2594,13 @@
 
     if (conf->resolver == NULL) {
         conf->resolver = prev->resolver;
+
+        if (conf->resolver == NULL) {
+            conf->resolver = ngx_resolver_create(NULL, cf->cycle->new_log);
+            if (conf->resolver == NULL) {
+                return NGX_OK;
+            }
+        }
     }
 
     ngx_conf_merge_path_value(conf->client_body_temp_path,
diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c
index 7901bb6..e51638b 100644
--- a/src/http/ngx_http_upstream.c
+++ b/src/http/ngx_http_upstream.c
@@ -398,13 +398,6 @@
             }
         }
 
-        if (clcf->resolver == NULL) {
-            ngx_log_error(NGX_LOG_ERR, c->log, 0,
-                          "no resolver defined to resolve %V", host);
-            ngx_http_finalize_request(r, NGX_HTTP_BAD_GATEWAY);
-            return;
-        }
-
         temp.name = *host;
 
         ctx = ngx_resolve_start(clcf->resolver, &temp);
@@ -413,6 +406,14 @@
             return;
         }
 
+        if (ctx == NGX_NO_RESOLVER) {
+            ngx_log_error(NGX_LOG_ERR, c->log, 0,
+                          "no resolver defined to resolve %V", host);
+
+            ngx_http_finalize_request(r, NGX_HTTP_BAD_GATEWAY);
+            return;
+        }
+
         ctx->name = *host;
         ctx->type = NGX_RESOLVE_A;
         ctx->handler = ngx_http_upstream_resolve_handler;
