Mercurial > hg > nginx
comparison src/core/ngx_resolver.c @ 7276:a90f7812de35
Resolver: close UDP socket on error or incomplete send.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Wed, 23 May 2018 10:41:38 +0300 |
parents | e15bf978447e |
children | 91ea68dd1501 |
comparison
equal
deleted
inserted
replaced
7275:e15bf978447e | 7276:a90f7812de35 |
---|---|
1298 } | 1298 } |
1299 | 1299 |
1300 n = ngx_send(rec->udp, query, qlen); | 1300 n = ngx_send(rec->udp, query, qlen); |
1301 | 1301 |
1302 if (n == NGX_ERROR) { | 1302 if (n == NGX_ERROR) { |
1303 return NGX_ERROR; | 1303 goto failed; |
1304 } | 1304 } |
1305 | 1305 |
1306 if ((size_t) n != (size_t) qlen) { | 1306 if ((size_t) n != (size_t) qlen) { |
1307 ngx_log_error(NGX_LOG_CRIT, &rec->log, 0, "send() incomplete"); | 1307 ngx_log_error(NGX_LOG_CRIT, &rec->log, 0, "send() incomplete"); |
1308 return NGX_ERROR; | 1308 goto failed; |
1309 } | 1309 } |
1310 | 1310 |
1311 return NGX_OK; | 1311 return NGX_OK; |
1312 | |
1313 failed: | |
1314 | |
1315 ngx_close_connection(rec->udp); | |
1316 rec->udp = NULL; | |
1317 | |
1318 return NGX_ERROR; | |
1312 } | 1319 } |
1313 | 1320 |
1314 | 1321 |
1315 static ngx_int_t | 1322 static ngx_int_t |
1316 ngx_resolver_send_tcp_query(ngx_resolver_t *r, ngx_resolver_connection_t *rec, | 1323 ngx_resolver_send_tcp_query(ngx_resolver_t *r, ngx_resolver_connection_t *rec, |