Welcome! Log In Create A New Profile

Advanced

[nginx] Resolver: factored out setting a timer for resolver timeout.

July 04, 2017 12:54PM
details: http://hg.nginx.org/nginx/rev/137c5be7df09
branches:
changeset: 7051:137c5be7df09
user: Sergey Kandaurov <pluknet@nginx.com>
date: Tue Jul 04 18:46:30 2017 +0300
description:
Resolver: factored out setting a timer for resolver timeout.

No functional changes.

diffstat:

src/core/ngx_resolver.c | 83 +++++++++++++++++++-----------------------------
1 files changed, 33 insertions(+), 50 deletions(-)

diffs (128 lines):

diff -r 8c5e3cc21332 -r 137c5be7df09 src/core/ngx_resolver.c
--- a/src/core/ngx_resolver.c Tue Jul 04 18:32:30 2017 +0300
+++ b/src/core/ngx_resolver.c Tue Jul 04 18:46:30 2017 +0300
@@ -105,6 +105,8 @@ static void ngx_resolver_rbtree_insert_v
ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel);
static ngx_int_t ngx_resolver_copy(ngx_resolver_t *r, ngx_str_t *name,
u_char *buf, u_char *src, u_char *last);
+static ngx_int_t ngx_resolver_set_timeout(ngx_resolver_t *r,
+ ngx_resolver_ctx_t *ctx);
static void ngx_resolver_timeout_handler(ngx_event_t *ev);
static void ngx_resolver_free_node(ngx_resolver_t *r, ngx_resolver_node_t *rn);
static void *ngx_resolver_alloc(ngx_resolver_t *r, size_t size);
@@ -728,19 +730,8 @@ ngx_resolve_name_locked(ngx_resolver_t *
}

if (rn->waiting) {
-
- if (ctx->event == NULL && ctx->timeout) {
- ctx->event = ngx_resolver_calloc(r, sizeof(ngx_event_t));
- if (ctx->event == NULL) {
- return NGX_ERROR;
- }
-
- ctx->event->handler = ngx_resolver_timeout_handler;
- ctx->event->data = ctx;
- ctx->event->log = r->log;
- ctx->ident = -1;
-
- ngx_add_timer(ctx->event, ctx->timeout);
+ if (ngx_resolver_set_timeout(r, ctx) != NGX_OK) {
+ return NGX_ERROR;
}

last->next = rn->waiting;
@@ -864,18 +855,8 @@ ngx_resolve_name_locked(ngx_resolver_t *
goto failed;
}

- if (ctx->event == NULL && ctx->timeout) {
- ctx->event = ngx_resolver_calloc(r, sizeof(ngx_event_t));
- if (ctx->event == NULL) {
- goto failed;
- }
-
- ctx->event->handler = ngx_resolver_timeout_handler;
- ctx->event->data = ctx;
- ctx->event->log = r->log;
- ctx->ident = -1;
-
- ngx_add_timer(ctx->event, ctx->timeout);
+ if (ngx_resolver_set_timeout(r, ctx) != NGX_OK) {
+ goto failed;
}

if (ngx_resolver_resend_empty(r)) {
@@ -1007,19 +988,8 @@ ngx_resolve_addr(ngx_resolver_ctx_t *ctx
}

if (rn->waiting) {
-
- if (ctx->event == NULL && ctx->timeout) {
- ctx->event = ngx_resolver_calloc(r, sizeof(ngx_event_t));
- if (ctx->event == NULL) {
- return NGX_ERROR;
- }
-
- ctx->event->handler = ngx_resolver_timeout_handler;
- ctx->event->data = ctx;
- ctx->event->log = r->log;
- ctx->ident = -1;
-
- ngx_add_timer(ctx->event, ctx->timeout);
+ if (ngx_resolver_set_timeout(r, ctx) != NGX_OK) {
+ return NGX_ERROR;
}

ctx->next = rn->waiting;
@@ -1089,18 +1059,8 @@ ngx_resolve_addr(ngx_resolver_ctx_t *ctx
goto failed;
}

- if (ctx->event == NULL && ctx->timeout) {
- ctx->event = ngx_resolver_calloc(r, sizeof(ngx_event_t));
- if (ctx->event == NULL) {
- goto failed;
- }
-
- ctx->event->handler = ngx_resolver_timeout_handler;
- ctx->event->data = ctx;
- ctx->event->log = r->log;
- ctx->ident = -1;
-
- ngx_add_timer(ctx->event, ctx->timeout);
+ if (ngx_resolver_set_timeout(r, ctx) != NGX_OK) {
+ goto failed;
}

if (ngx_resolver_resend_empty(r)) {
@@ -4033,6 +3993,29 @@ done:
}


+static ngx_int_t
+ngx_resolver_set_timeout(ngx_resolver_t *r, ngx_resolver_ctx_t *ctx)
+{
+ if (ctx->event || ctx->timeout == 0) {
+ return NGX_OK;
+ }
+
+ ctx->event = ngx_resolver_calloc(r, sizeof(ngx_event_t));
+ if (ctx->event == NULL) {
+ return NGX_ERROR;
+ }
+
+ ctx->event->handler = ngx_resolver_timeout_handler;
+ ctx->event->data = ctx;
+ ctx->event->log = r->log;
+ ctx->ident = -1;
+
+ ngx_add_timer(ctx->event, ctx->timeout);
+
+ return NGX_OK;
+}
+
+
static void
ngx_resolver_timeout_handler(ngx_event_t *ev)
{
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[nginx] Resolver: factored out setting a timer for resolver timeout.

ru@nginx.com 816 July 04, 2017 12:54PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 306
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready