]> git.kaiwu.me - nginx.git/commitdiff
Connection upgrade support in uwsgi and scgi modules.
authorMaxim Dounin <mdounin@mdounin.ru>
Wed, 20 Feb 2013 16:41:05 +0000 (16:41 +0000)
committerMaxim Dounin <mdounin@mdounin.ru>
Wed, 20 Feb 2013 16:41:05 +0000 (16:41 +0000)
Prodded by Roberto De Ioris.

src/http/modules/ngx_http_scgi_module.c
src/http/modules/ngx_http_uwsgi_module.c

index c87b44b5336ac4fd5413e899ae71a42ae4a47299..fab3766b612e0c0eb96347b4f032caf8b8a37752 100644 (file)
@@ -984,7 +984,7 @@ ngx_http_scgi_process_header(ngx_http_request_t *r)
             u = r->upstream;
 
             if (u->headers_in.status_n) {
-                return NGX_OK;
+                goto done;
             }
 
             if (u->headers_in.status) {
@@ -1015,6 +1015,14 @@ ngx_http_scgi_process_header(ngx_http_request_t *r)
                 u->state->status = u->headers_in.status_n;
             }
 
+        done:
+
+            if (u->headers_in.status_n == NGX_HTTP_SWITCHING_PROTOCOLS
+                && r->headers_in.upgrade) 
+            {
+                u->upgrade = 1;
+            }
+
             return NGX_OK;
         }
 
index c683df0be215a563a9bf5846b487147fa0fd1779..f71a4f2941418afb378c3e607519a54b4fa18d82 100644 (file)
@@ -1018,7 +1018,7 @@ ngx_http_uwsgi_process_header(ngx_http_request_t *r)
             u = r->upstream;
 
             if (u->headers_in.status_n) {
-                return NGX_OK;
+                goto done;
             }
 
             if (u->headers_in.status) {
@@ -1049,6 +1049,14 @@ ngx_http_uwsgi_process_header(ngx_http_request_t *r)
                 u->state->status = u->headers_in.status_n;
             }
 
+        done:
+
+            if (u->headers_in.status_n == NGX_HTTP_SWITCHING_PROTOCOLS
+                && r->headers_in.upgrade) 
+            {
+                u->upgrade = 1;
+            }
+
             return NGX_OK;
         }