changeset 6202:6345822f0abb

Stream: upstream "connected" flag. Once upstream is connected, the upstream buffer is allocated. Previously, the proxy module used the buffer allocation status to check if upstream is connected. Now it's enough to check the flag.
author Roman Arutyunyan <arut@nginx.com>
date Thu, 25 Jun 2015 12:36:52 +0300
parents 24488e6db782
children fdfdcad62875
files src/stream/ngx_stream_proxy_module.c src/stream/ngx_stream_upstream.h
diffstat 2 files changed, 7 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/stream/ngx_stream_proxy_module.c
+++ b/src/stream/ngx_stream_proxy_module.c
@@ -524,6 +524,8 @@ ngx_stream_proxy_init_upstream(ngx_strea
     u->upstream_buf.pos = p;
     u->upstream_buf.last = p;
 
+    u->connected = 1;
+
     pc->read->handler = ngx_stream_proxy_upstream_handler;
     pc->write->handler = ngx_stream_proxy_upstream_handler;
 
@@ -870,7 +872,7 @@ ngx_stream_proxy_process_connection(ngx_
                     return;
                 }
 
-                if (u->upstream_buf.start) {
+                if (u->connected) {
                     pc = u->peer.connection;
 
                     if (!c->read->delayed && !pc->read->delayed) {
@@ -901,7 +903,7 @@ ngx_stream_proxy_process_connection(ngx_
         return;
     }
 
-    if (from_upstream && u->upstream_buf.start == NULL) {
+    if (from_upstream && !u->connected) {
         return;
     }
 
@@ -1000,7 +1002,7 @@ ngx_stream_proxy_process(ngx_stream_sess
     u = s->upstream;
 
     c = s->connection;
-    pc = u->upstream_buf.start ? u->peer.connection : NULL;
+    pc = u->connected ? u->peer.connection : NULL;
 
     pscf = ngx_stream_get_module_srv_conf(s, ngx_stream_proxy_module);
 
--- a/src/stream/ngx_stream_upstream.h
+++ b/src/stream/ngx_stream_upstream.h
@@ -87,8 +87,8 @@ typedef struct {
 #if (NGX_STREAM_SSL)
     ngx_str_t                          ssl_name;
 #endif
-    ngx_uint_t                         proxy_protocol;
-                                               /* unsigned  proxy_protocol:1; */
+    unsigned                           connected:1;
+    unsigned                           proxy_protocol:1;
 } ngx_stream_upstream_t;