diff options
author | Ruslan Ermilov <ru@nginx.com> | 2018-05-23 10:41:38 +0300 |
---|---|---|
committer | Ruslan Ermilov <ru@nginx.com> | 2018-05-23 10:41:38 +0300 |
commit | 4ac8036e78aeb95fe85e41d45caf82722f8e2d07 (patch) | |
tree | 0ef5de819e278fd00e7d7fe0f6131f7d0842aeb6 /src | |
parent | 4fca5bf1e120c074270c93e8165d3b2dffc90499 (diff) | |
download | nginx-4ac8036e78aeb95fe85e41d45caf82722f8e2d07.tar.gz nginx-4ac8036e78aeb95fe85e41d45caf82722f8e2d07.zip |
Resolver: close UDP socket on error or incomplete send.
Diffstat (limited to 'src')
-rw-r--r-- | src/core/ngx_resolver.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/core/ngx_resolver.c b/src/core/ngx_resolver.c index 5365e9f41..f904091bf 100644 --- a/src/core/ngx_resolver.c +++ b/src/core/ngx_resolver.c @@ -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; } |