From f81ae4e39234526d259d6ecdd62a09cad6f7adce Mon Sep 17 00:00:00 2001 From: Roman Arutyunyan Date: Thu, 25 Jun 2015 12:36:52 +0300 Subject: [PATCH] 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. --- src/stream/ngx_stream_proxy_module.c | 8 +++++--- src/stream/ngx_stream_upstream.h | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/stream/ngx_stream_proxy_module.c b/src/stream/ngx_stream_proxy_module.c index 10ad7d23c..ebbe02718 100644 --- 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_stream_session_t *s) 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_event_t *ev, ngx_uint_t from_upstream) 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_event_t *ev, ngx_uint_t from_upstream) 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_session_t *s, ngx_uint_t from_upstream, 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); diff --git a/src/stream/ngx_stream_upstream.h b/src/stream/ngx_stream_upstream.h index fddc2b168..80520c2b3 100644 --- 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;