diff 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
line wrap: on
line diff
--- a/src/core/ngx_resolver.c
+++ b/src/core/ngx_resolver.c
@@ -191,6 +191,7 @@ ngx_resolver_create(ngx_conf_t *cf, ngx_
     r->event->handler = ngx_resolver_resend_handler;
     r->event->data = r;
     r->event->log = &cf->cycle->new_log;
+    r->event->cancelable = 1;
     r->ident = -1;
 
     r->resend_timeout = 5;
@@ -4008,6 +4009,7 @@ ngx_resolver_set_timeout(ngx_resolver_t 
     ctx->event->handler = ngx_resolver_timeout_handler;
     ctx->event->data = ctx;
     ctx->event->log = r->log;
+    ctx->event->cancelable = ctx->cancelable;
     ctx->ident = -1;
 
     ngx_add_timer(ctx->event, ctx->timeout);