[nginx] svn commit: r4372 - trunk/src/http/modules
mdounin at mdounin.ru
mdounin at mdounin.ru
Mon Dec 19 11:23:16 UTC 2011
Author: mdounin
Date: 2011-12-19 11:23:16 +0000 (Mon, 19 Dec 2011)
New Revision: 4372
Log:
Fixed incorrect use of r->http_version in scgi module.
The r->http_version is a version of client's request, and modules must
not set it unless they are really willing to downgrade protocol version
used for a response (i.e. to HTTP/0.9 if no response headers are available).
In neither case r->http_version may be upgraded.
The former code downgraded response from HTTP/1.1 to HTTP/1.0 for no reason,
causing various problems (see ticket #66). It was also possible that
HTTP/0.9 requests were upgraded to HTTP/1.0.
Modified:
trunk/src/http/modules/ngx_http_scgi_module.c
Modified: trunk/src/http/modules/ngx_http_scgi_module.c
===================================================================
--- trunk/src/http/modules/ngx_http_scgi_module.c 2011-12-19 11:21:46 UTC (rev 4371)
+++ trunk/src/http/modules/ngx_http_scgi_module.c 2011-12-19 11:23:16 UTC (rev 4372)
@@ -857,11 +857,7 @@
}
if (rc == NGX_ERROR) {
-
- r->http_version = NGX_HTTP_VERSION_9;
-
u->process_header = ngx_http_scgi_process_header;
-
return ngx_http_scgi_process_header(r);
}
@@ -961,12 +957,12 @@
ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"http scgi header done");
- if (r->http_version > NGX_HTTP_VERSION_9) {
+ u = r->upstream;
+
+ if (u->headers_in.status_n) {
return NGX_OK;
}
- u = r->upstream;
-
if (u->headers_in.status) {
status_line = &u->headers_in.status->value;
@@ -978,12 +974,10 @@
return NGX_HTTP_UPSTREAM_INVALID_HEADER;
}
- r->http_version = NGX_HTTP_VERSION_10;
u->headers_in.status_n = status;
u->headers_in.status_line = *status_line;
} else if (u->headers_in.location) {
- r->http_version = NGX_HTTP_VERSION_10;
u->headers_in.status_n = 302;
ngx_str_set(&u->headers_in.status_line,
"302 Moved Temporarily");
More information about the nginx-devel
mailing list