diff src/http/ngx_http_parse.c @ 71:59229033ae93

nginx-0.0.1-2003-04-08-19:40:10 import
author Igor Sysoev <igor@sysoev.ru>
date Tue, 08 Apr 2003 15:40:10 +0000
parents 5a7d1aaa1618
children 66de3f065886
line wrap: on
line diff
--- a/src/http/ngx_http_parse.c
+++ b/src/http/ngx_http_parse.c
@@ -338,6 +338,7 @@ int ngx_read_http_header_line(ngx_http_r
         sw_space_after_value,
         sw_almost_done,
         sw_header_almost_done,
+        sw_ignore_line,
         sw_done,
         sw_header_done
     } state;
@@ -404,6 +405,14 @@ int ngx_read_http_header_line(ngx_http_r
                 break;
             }
 
+            if (ch == '/') {
+                /* IIS can send duplicate "HTTP/1.1 ..." lines */
+                if (r->proxy && ngx_strncmp(r->header_start, "HTTP", 4) == 0) {
+                    state = sw_ignore_line;
+                    break;
+                }
+            }
+
             return NGX_HTTP_PARSE_INVALID_HEADER;
 
         /* space* before header value */
@@ -461,6 +470,17 @@ int ngx_read_http_header_line(ngx_http_r
             }
             break;
 
+        /* ignore header line */
+        case sw_ignore_line:
+            switch (ch) {
+            case LF:
+                state = sw_start;
+                break;
+            default:
+                break;
+            }
+            break;
+
         /* end of header line */
         case sw_almost_done:
             switch (ch) {