Mercurial > hg > nginx
comparison src/core/ngx_resolver.c @ 7052:70e65bf8dfd7
Resolver: cancelable resend timer event.
It is safe because re-sending still works during graceful shutdown as
long as resolving takes place (and resolve tasks set their own timeouts
that are not cancelable).
Also, the new ctx->cancelable flag can be set to make resolve task's
timeout event cancelable.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Tue, 04 Jul 2017 18:50:41 +0300 |
parents | 137c5be7df09 |
children | e15bf978447e |
comparison
equal
deleted
inserted
replaced
7051:137c5be7df09 | 7052:70e65bf8dfd7 |
---|---|
189 #endif | 189 #endif |
190 | 190 |
191 r->event->handler = ngx_resolver_resend_handler; | 191 r->event->handler = ngx_resolver_resend_handler; |
192 r->event->data = r; | 192 r->event->data = r; |
193 r->event->log = &cf->cycle->new_log; | 193 r->event->log = &cf->cycle->new_log; |
194 r->event->cancelable = 1; | |
194 r->ident = -1; | 195 r->ident = -1; |
195 | 196 |
196 r->resend_timeout = 5; | 197 r->resend_timeout = 5; |
197 r->tcp_timeout = 5; | 198 r->tcp_timeout = 5; |
198 r->expire = 30; | 199 r->expire = 30; |
4006 } | 4007 } |
4007 | 4008 |
4008 ctx->event->handler = ngx_resolver_timeout_handler; | 4009 ctx->event->handler = ngx_resolver_timeout_handler; |
4009 ctx->event->data = ctx; | 4010 ctx->event->data = ctx; |
4010 ctx->event->log = r->log; | 4011 ctx->event->log = r->log; |
4012 ctx->event->cancelable = ctx->cancelable; | |
4011 ctx->ident = -1; | 4013 ctx->ident = -1; |
4012 | 4014 |
4013 ngx_add_timer(ctx->event, ctx->timeout); | 4015 ngx_add_timer(ctx->event, ctx->timeout); |
4014 | 4016 |
4015 return NGX_OK; | 4017 return NGX_OK; |