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;