Uwsgi: merged r->http_version fixes from scgi module.
Fixed incorrect use of r->http_version (r4372). Removed duplicate function
declaration (r4373). Removed error if there is no Status header (r4374).
Maxim Dounin
10 years ago
41 | 41 | static ngx_int_t ngx_http_uwsgi_create_request(ngx_http_request_t *r); |
42 | 42 | static ngx_int_t ngx_http_uwsgi_reinit_request(ngx_http_request_t *r); |
43 | 43 | static ngx_int_t ngx_http_uwsgi_process_status_line(ngx_http_request_t *r); |
44 | static ngx_int_t ngx_http_uwsgi_process_header(ngx_http_request_t *r); | |
45 | 44 | static ngx_int_t ngx_http_uwsgi_process_header(ngx_http_request_t *r); |
46 | 45 | static void ngx_http_uwsgi_abort_request(ngx_http_request_t *r); |
47 | 46 | static void ngx_http_uwsgi_finalize_request(ngx_http_request_t *r, |
911 | 910 | } |
912 | 911 | |
913 | 912 | if (rc == NGX_ERROR) { |
914 | r->http_version = NGX_HTTP_VERSION_9; | |
915 | ||
916 | 913 | u->process_header = ngx_http_uwsgi_process_header; |
917 | ||
918 | 914 | return ngx_http_uwsgi_process_header(r); |
919 | 915 | } |
920 | 916 | |
1014 | 1010 | ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, |
1015 | 1011 | "http uwsgi header done"); |
1016 | 1012 | |
1017 | if (r->http_version > NGX_HTTP_VERSION_9) { | |
1013 | u = r->upstream; | |
1014 | ||
1015 | if (u->headers_in.status_n) { | |
1018 | 1016 | return NGX_OK; |
1019 | 1017 | } |
1020 | ||
1021 | u = r->upstream; | |
1022 | 1018 | |
1023 | 1019 | if (u->headers_in.status) { |
1024 | 1020 | status_line = &u->headers_in.status->value; |
1031 | 1027 | return NGX_HTTP_UPSTREAM_INVALID_HEADER; |
1032 | 1028 | } |
1033 | 1029 | |
1034 | r->http_version = NGX_HTTP_VERSION_10; | |
1035 | 1030 | u->headers_in.status_n = status; |
1036 | 1031 | u->headers_in.status_line = *status_line; |
1037 | 1032 | |
1038 | 1033 | } else if (u->headers_in.location) { |
1039 | r->http_version = NGX_HTTP_VERSION_10; | |
1040 | 1034 | u->headers_in.status_n = 302; |
1041 | 1035 | ngx_str_set(&u->headers_in.status_line, |
1042 | 1036 | "302 Moved Temporarily"); |
1043 | 1037 | |
1044 | 1038 | } else { |
1045 | ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, | |
1046 | "upstream sent neither valid HTTP/1.0 header " | |
1047 | "nor \"Status\" header line"); | |
1048 | 1039 | u->headers_in.status_n = 200; |
1049 | 1040 | ngx_str_set(&u->headers_in.status_line, "200 OK"); |
1050 | 1041 | } |