# HG changeset patch # User Ruslan Ermilov # Date 1527061298 -10800 # Node ID a90f7812de3548a5041f5f88d905cbdddfc74998 # Parent e15bf978447eaa8c7a552cbcf20360cfacbc062a Resolver: close UDP socket on error or incomplete send. diff --git a/src/core/ngx_resolver.c b/src/core/ngx_resolver.c --- a/src/core/ngx_resolver.c +++ b/src/core/ngx_resolver.c @@ -1300,15 +1300,22 @@ ngx_resolver_send_udp_query(ngx_resolver 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; }