]> git.kaiwu.me - nginx.git/commitdiff
Stream: set action before each recv/send while proxying.
authorRoman Arutyunyan <arut@nginx.com>
Thu, 22 Mar 2018 15:43:49 +0000 (18:43 +0300)
committerRoman Arutyunyan <arut@nginx.com>
Thu, 22 Mar 2018 15:43:49 +0000 (18:43 +0300)
Now it's clear from log error message if the error occurred on client or
upstream side.

src/stream/ngx_stream_proxy_module.c

index 818d7329b58df93ededd0cf04ca9108ce12d8f82..30572cdd99fd1bfaf8cfa69ad36b81736ff5ec9f 100644 (file)
@@ -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;