aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDmitry Volyntsev <xeioex@nginx.com>2016-12-16 18:21:55 +0300
committerDmitry Volyntsev <xeioex@nginx.com>2016-12-16 18:21:55 +0300
commite114960e5353b6e2db82251872300955cfc0169b (patch)
tree1957ab904ecb4b530c1024845d74ed32913609f4 /src
parent6b18bb541e81acdc42968071d200c03f9ef8d4a1 (diff)
downloadnginx-e114960e5353b6e2db82251872300955cfc0169b.tar.gz
nginx-e114960e5353b6e2db82251872300955cfc0169b.zip
Resolver: fixed a race between parallel name and addr resolves.
Previously, ngx_resolve_name() and ngx_resolve_addr() may have rescheduled the resend timer while it was already in progress.
Diffstat (limited to 'src')
-rw-r--r--src/core/ngx_resolver.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/core/ngx_resolver.c b/src/core/ngx_resolver.c
index d5f06eb1d..54e037de0 100644
--- a/src/core/ngx_resolver.c
+++ b/src/core/ngx_resolver.c
@@ -875,7 +875,7 @@ ngx_resolve_name_locked(ngx_resolver_t *r, ngx_resolver_ctx_t *ctx,
ngx_add_timer(ctx->event, ctx->timeout);
}
- if (ngx_queue_empty(resend_queue)) {
+ if (ngx_resolver_resend_empty(r)) {
ngx_add_timer(r->event, (ngx_msec_t) (r->resend_timeout * 1000));
}
@@ -1098,7 +1098,7 @@ ngx_resolve_addr(ngx_resolver_ctx_t *ctx)
ngx_add_timer(ctx->event, ctx->timeout);
}
- if (ngx_queue_empty(resend_queue)) {
+ if (ngx_resolver_resend_empty(r)) {
ngx_add_timer(r->event, (ngx_msec_t) (r->resend_timeout * 1000));
}