changeset 5692:ed5fb7d22d46

SPDY: set log action for PROXY protocol only while parsing it. Handling of PROXY protocol for SPDY connection is currently implemented as a SPDY state. And while nginx waiting for PROXY protocol data it continues to process SPDY connection: initializes zlib context, sends control frames.
author Valentin Bartenev <vbart@nginx.com>
date Thu, 15 May 2014 19:22:06 +0400
parents 31349361558e
children 701d6e17e42c
files src/http/ngx_http_spdy.c
diffstat 1 files changed, 9 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/http/ngx_http_spdy.c
+++ b/src/http/ngx_http_spdy.c
@@ -424,12 +424,8 @@ ngx_http_spdy_init(ngx_event_t *rev)
 
     sc->init_window = NGX_SPDY_INIT_STREAM_WINDOW;
 
-    sc->handler = ngx_http_spdy_state_head;
-
-    if (hc->proxy_protocol) {
-        c->log->action = "reading PROXY protocol";
-        sc->handler = ngx_http_spdy_proxy_protocol;
-    }
+    sc->handler = hc->proxy_protocol ? ngx_http_spdy_proxy_protocol
+                                     : ngx_http_spdy_state_head;
 
     sc->zstream_in.zalloc = ngx_http_spdy_zalloc;
     sc->zstream_in.zfree = ngx_http_spdy_zfree;
@@ -823,14 +819,19 @@ static u_char *
 ngx_http_spdy_proxy_protocol(ngx_http_spdy_connection_t *sc, u_char *pos,
     u_char *end)
 {
+    ngx_log_t  *log;
+
+    log = sc->connection->log;
+    log->action = "reading PROXY protocol";
+
     pos = ngx_proxy_protocol_parse(sc->connection, pos, end);
 
+    log->action = "processing SPDY";
+
     if (pos == NULL) {
         return ngx_http_spdy_state_protocol_error(sc);
     }
 
-    sc->connection->log->action = "processing SPDY";
-
     return ngx_http_spdy_state_complete(sc, pos, end);
 }