summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Arutyunyan <arut@nginx.com>2018-03-22 18:43:49 +0300
committerRoman Arutyunyan <arut@nginx.com>2018-03-22 18:43:49 +0300
commitf39d5e8b33d507f95e800a6d6301da510a72a3af (patch)
tree6f2dd4f7d5ca37e5fcdff45ff3d1c6678ca5464e
parent0ac57648ebc93358e977939bfcb9d1e67485b98e (diff)
downloadnginx-f39d5e8b33d507f95e800a6d6301da510a72a3af.tar.gz
Stream: set action before each recv/send while proxying.
Now it's clear from log error message if the error occurred on client or upstream side.
-rw-r--r--src/stream/ngx_stream_proxy_module.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/stream/ngx_stream_proxy_module.c b/src/stream/ngx_stream_proxy_module.c
index 818d7329b..30572cdd9 100644
--- a/src/stream/ngx_stream_proxy_module.c
+++ b/src/stream/ngx_stream_proxy_module.c
@@ -801,8 +801,6 @@ ngx_stream_proxy_init_upstream(ngx_stream_session_t *s)
NGX_STREAM_UPSTREAM_NOTIFY_CONNECT);
}
- c->log->action = "proxying connection";
-
if (u->upstream_buf.start == NULL) {
p = ngx_pnalloc(c->pool, pscf->buffer_size);
if (p == NULL) {
@@ -1449,6 +1447,7 @@ static void
ngx_stream_proxy_process(ngx_stream_session_t *s, ngx_uint_t from_upstream,
ngx_uint_t do_write)
{
+ char *recv_action, *send_action;
off_t *received, limit;
size_t size, limit_rate;
ssize_t n;
@@ -1492,6 +1491,8 @@ ngx_stream_proxy_process(ngx_stream_session_t *s, ngx_uint_t from_upstream,
received = &u->received;
out = &u->downstream_out;
busy = &u->downstream_busy;
+ recv_action = "proxying and reading from upstream";
+ send_action = "proxying and sending to client";
} else {
src = c;
@@ -1501,6 +1502,8 @@ ngx_stream_proxy_process(ngx_stream_session_t *s, ngx_uint_t from_upstream,
received = &s->received;
out = &u->upstream_out;
busy = &u->upstream_busy;
+ recv_action = "proxying and reading from client";
+ send_action = "proxying and sending to upstream";
}
for ( ;; ) {
@@ -1508,6 +1511,8 @@ ngx_stream_proxy_process(ngx_stream_session_t *s, ngx_uint_t from_upstream,
if (do_write && dst) {
if (*out || *busy || dst->buffered) {
+ c->log->action = send_action;
+
rc = ngx_stream_top_filter(s, *out, from_upstream);
if (rc == NGX_ERROR) {
@@ -1551,6 +1556,8 @@ ngx_stream_proxy_process(ngx_stream_session_t *s, ngx_uint_t from_upstream,
}
}
+ c->log->action = recv_action;
+
n = src->recv(src, b->last, size);
if (n == NGX_AGAIN) {
@@ -1620,6 +1627,8 @@ ngx_stream_proxy_process(ngx_stream_session_t *s, ngx_uint_t from_upstream,
break;
}
+ c->log->action = "proxying connection";
+
if (src->read->eof && dst && (dst->read->eof || !dst->buffered)) {
handler = c->log->handler;
c->log->handler = NULL;