]> git.kaiwu.me - nginx.git/commitdiff
Resolver: close UDP socket on error or incomplete send.
authorRuslan Ermilov <ru@nginx.com>
Wed, 23 May 2018 07:41:38 +0000 (10:41 +0300)
committerRuslan Ermilov <ru@nginx.com>
Wed, 23 May 2018 07:41:38 +0000 (10:41 +0300)
src/core/ngx_resolver.c

index 5365e9f4126e2dd01560076b78a9d53b556758e7..f904091bf0f49ff2b23005050ccdbdadfd99297e 100644 (file)
@@ -1300,15 +1300,22 @@ ngx_resolver_send_udp_query(ngx_resolver_t *r, ngx_resolver_connection_t  *rec,
     n = ngx_send(rec->udp, query, qlen);
 
     if (n == NGX_ERROR) {
-        return NGX_ERROR;
+        goto failed;
     }
 
     if ((size_t) n != (size_t) qlen) {
         ngx_log_error(NGX_LOG_CRIT, &rec->log, 0, "send() incomplete");
-        return NGX_ERROR;
+        goto failed;
     }
 
     return NGX_OK;
+
+failed:
+
+    ngx_close_connection(rec->udp);
+    rec->udp = NULL;
+
+    return NGX_ERROR;
 }