summaryrefslogtreecommitdiffhomepage
path: root/src/core/ngx_resolver.c
diff options
context:
space:
mode:
authorSergey Kandaurov <pluknet@nginx.com>2021-03-30 23:34:51 +0300
committerSergey Kandaurov <pluknet@nginx.com>2021-03-30 23:34:51 +0300
commitdd98809befadeda443a0e25da70c3020e613481e (patch)
tree9a21777e29904ad66ddb5b852d55036aff15476b /src/core/ngx_resolver.c
parent7d1cf8ffb442727bc8e54630dd565c8139cead67 (diff)
parent7b053dd1b20237622f89148e6c01a43927a4572a (diff)
downloadnginx-dd98809befadeda443a0e25da70c3020e613481e.tar.gz
nginx-dd98809befadeda443a0e25da70c3020e613481e.tar.bz2
Merged with the default branch.
Diffstat (limited to 'src/core/ngx_resolver.c')
-rw-r--r--src/core/ngx_resolver.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/core/ngx_resolver.c b/src/core/ngx_resolver.c
index 5b716ee75..49616b776 100644
--- a/src/core/ngx_resolver.c
+++ b/src/core/ngx_resolver.c
@@ -1563,13 +1563,28 @@ ngx_resolver_udp_read(ngx_event_t *rev)
do {
n = ngx_udp_recv(c, buf, NGX_RESOLVER_UDP_SIZE);
- if (n < 0) {
- return;
+ if (n == NGX_AGAIN) {
+ break;
+ }
+
+ if (n == NGX_ERROR) {
+ goto failed;
}
ngx_resolver_process_response(rec->resolver, buf, n, 0);
} while (rev->ready);
+
+ if (ngx_handle_read_event(rev, 0) != NGX_OK) {
+ goto failed;
+ }
+
+ return;
+
+failed:
+
+ ngx_close_connection(rec->udp);
+ rec->udp = NULL;
}