Mercurial > hg > nginx
comparison src/core/ngx_resolver.c @ 6846:c3a895b94d3f
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.
author | Dmitry Volyntsev <xeioex@nginx.com> |
---|---|
date | Fri, 16 Dec 2016 18:21:55 +0300 |
parents | 9abba5b70ea0 |
children | d72b38376092 |
comparison
equal
deleted
inserted
replaced
6845:9abba5b70ea0 | 6846:c3a895b94d3f |
---|---|
873 ctx->ident = -1; | 873 ctx->ident = -1; |
874 | 874 |
875 ngx_add_timer(ctx->event, ctx->timeout); | 875 ngx_add_timer(ctx->event, ctx->timeout); |
876 } | 876 } |
877 | 877 |
878 if (ngx_queue_empty(resend_queue)) { | 878 if (ngx_resolver_resend_empty(r)) { |
879 ngx_add_timer(r->event, (ngx_msec_t) (r->resend_timeout * 1000)); | 879 ngx_add_timer(r->event, (ngx_msec_t) (r->resend_timeout * 1000)); |
880 } | 880 } |
881 | 881 |
882 rn->expire = ngx_time() + r->resend_timeout; | 882 rn->expire = ngx_time() + r->resend_timeout; |
883 | 883 |
1096 ctx->ident = -1; | 1096 ctx->ident = -1; |
1097 | 1097 |
1098 ngx_add_timer(ctx->event, ctx->timeout); | 1098 ngx_add_timer(ctx->event, ctx->timeout); |
1099 } | 1099 } |
1100 | 1100 |
1101 if (ngx_queue_empty(resend_queue)) { | 1101 if (ngx_resolver_resend_empty(r)) { |
1102 ngx_add_timer(r->event, (ngx_msec_t) (r->resend_timeout * 1000)); | 1102 ngx_add_timer(r->event, (ngx_msec_t) (r->resend_timeout * 1000)); |
1103 } | 1103 } |
1104 | 1104 |
1105 rn->expire = ngx_time() + r->resend_timeout; | 1105 rn->expire = ngx_time() + r->resend_timeout; |
1106 | 1106 |