From ab00d7fd2badb8594565bcc38d49abae0c379aeb Mon Sep 17 00:00:00 2001 From: Kirill A. Korinskiy Date: Tue, 21 Apr 2009 21:54:11 +0400 Subject: [PATCH] Move calculation $upstream_response_time before send header to client. Cc: catap@catap.ru Now calculation $upstream_response_time happen after send header to client and we have a 0 ms response to not error (last) upstream. --- src/http/ngx_http_upstream.c | 23 +++++++++++------------ 1 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c index 7ae15cb..0771388 100644 --- a/src/http/ngx_http_upstream.c +++ b/src/http/ngx_http_upstream.c @@ -1843,10 +1843,21 @@ ngx_http_upstream_send_response(ngx_http_request_t *r, ngx_http_upstream_t *u) int tcp_nodelay; ssize_t n; ngx_int_t rc; + ngx_time_t *tp; ngx_event_pipe_t *p; ngx_connection_t *c; ngx_http_core_loc_conf_t *clcf; + if (u->state && u->state->response_sec) { + tp = ngx_timeofday(); + u->state->response_sec = tp->sec - u->state->response_sec; + u->state->response_msec = tp->msec - u->state->response_msec; + + if (u->pipe) { + u->state->response_length = u->pipe->read_length; + } + } + rc = ngx_http_send_header(r); if (rc == NGX_ERROR || rc > NGX_OK || r->post_action) { @@ -2735,8 +2746,6 @@ static void ngx_http_upstream_finalize_request(ngx_http_request_t *r, ngx_http_upstream_t *u, ngx_int_t rc) { - ngx_time_t *tp; - ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, "finalize http upstream request: %i", rc); @@ -2744,16 +2753,6 @@ ngx_http_upstream_finalize_request(ngx_http_request_t *r, *u->cleanup = NULL; } - if (u->state && u->state->response_sec) { - tp = ngx_timeofday(); - u->state->response_sec = tp->sec - u->state->response_sec; - u->state->response_msec = tp->msec - u->state->response_msec; - - if (u->pipe) { - u->state->response_length = u->pipe->read_length; - } - } - u->finalize_request(r, rc); if (u->peer.free) { -- 1.6.2