Mercurial > hg > nginx
comparison src/core/ngx_resolver.c @ 6457:a6711b85da83
Resolver: do not enable resolve timer if provided timeout is zero.
author | Dmitry Volyntsev <xeioex@nginx.com> |
---|---|
date | Wed, 23 Mar 2016 17:44:36 +0300 |
parents | c94aba230a5a |
children | 384154fc634f |
comparison
equal
deleted
inserted
replaced
6456:c94aba230a5a | 6457:a6711b85da83 |
---|---|
609 return NGX_OK; | 609 return NGX_OK; |
610 } | 610 } |
611 | 611 |
612 if (rn->waiting) { | 612 if (rn->waiting) { |
613 | 613 |
614 if (ctx->event == NULL) { | 614 if (ctx->event == NULL && ctx->timeout) { |
615 ctx->event = ngx_resolver_calloc(r, sizeof(ngx_event_t)); | 615 ctx->event = ngx_resolver_calloc(r, sizeof(ngx_event_t)); |
616 if (ctx->event == NULL) { | 616 if (ctx->event == NULL) { |
617 return NGX_ERROR; | 617 return NGX_ERROR; |
618 } | 618 } |
619 | 619 |
727 | 727 |
728 if (ngx_resolver_send_query(r, rn) != NGX_OK) { | 728 if (ngx_resolver_send_query(r, rn) != NGX_OK) { |
729 goto failed; | 729 goto failed; |
730 } | 730 } |
731 | 731 |
732 if (ctx->event == NULL) { | 732 if (ctx->event == NULL && ctx->timeout) { |
733 ctx->event = ngx_resolver_calloc(r, sizeof(ngx_event_t)); | 733 ctx->event = ngx_resolver_calloc(r, sizeof(ngx_event_t)); |
734 if (ctx->event == NULL) { | 734 if (ctx->event == NULL) { |
735 goto failed; | 735 goto failed; |
736 } | 736 } |
737 | 737 |
870 return NGX_OK; | 870 return NGX_OK; |
871 } | 871 } |
872 | 872 |
873 if (rn->waiting) { | 873 if (rn->waiting) { |
874 | 874 |
875 ctx->event = ngx_resolver_calloc(r, sizeof(ngx_event_t)); | 875 if (ctx->event == NULL && ctx->timeout) { |
876 if (ctx->event == NULL) { | 876 ctx->event = ngx_resolver_calloc(r, sizeof(ngx_event_t)); |
877 return NGX_ERROR; | 877 if (ctx->event == NULL) { |
878 } | 878 return NGX_ERROR; |
879 | 879 } |
880 ctx->event->handler = ngx_resolver_timeout_handler; | 880 |
881 ctx->event->data = ctx; | 881 ctx->event->handler = ngx_resolver_timeout_handler; |
882 ctx->event->log = r->log; | 882 ctx->event->data = ctx; |
883 ctx->ident = -1; | 883 ctx->event->log = r->log; |
884 | 884 ctx->ident = -1; |
885 ngx_add_timer(ctx->event, ctx->timeout); | 885 |
886 ngx_add_timer(ctx->event, ctx->timeout); | |
887 } | |
886 | 888 |
887 ctx->next = rn->waiting; | 889 ctx->next = rn->waiting; |
888 rn->waiting = ctx; | 890 rn->waiting = ctx; |
889 ctx->state = NGX_AGAIN; | 891 ctx->state = NGX_AGAIN; |
890 ctx->node = rn; | 892 ctx->node = rn; |
947 | 949 |
948 if (ngx_resolver_send_query(r, rn) != NGX_OK) { | 950 if (ngx_resolver_send_query(r, rn) != NGX_OK) { |
949 goto failed; | 951 goto failed; |
950 } | 952 } |
951 | 953 |
952 ctx->event = ngx_resolver_calloc(r, sizeof(ngx_event_t)); | 954 if (ctx->event == NULL && ctx->timeout) { |
953 if (ctx->event == NULL) { | 955 ctx->event = ngx_resolver_calloc(r, sizeof(ngx_event_t)); |
954 goto failed; | 956 if (ctx->event == NULL) { |
955 } | 957 goto failed; |
956 | 958 } |
957 ctx->event->handler = ngx_resolver_timeout_handler; | 959 |
958 ctx->event->data = ctx; | 960 ctx->event->handler = ngx_resolver_timeout_handler; |
959 ctx->event->log = r->log; | 961 ctx->event->data = ctx; |
960 ctx->ident = -1; | 962 ctx->event->log = r->log; |
961 | 963 ctx->ident = -1; |
962 ngx_add_timer(ctx->event, ctx->timeout); | 964 |
965 ngx_add_timer(ctx->event, ctx->timeout); | |
966 } | |
963 | 967 |
964 if (ngx_queue_empty(resend_queue)) { | 968 if (ngx_queue_empty(resend_queue)) { |
965 ngx_add_timer(r->event, (ngx_msec_t) (r->resend_timeout * 1000)); | 969 ngx_add_timer(r->event, (ngx_msec_t) (r->resend_timeout * 1000)); |
966 } | 970 } |
967 | 971 |