Mercurial > hg > nginx-ranges
comparison src/http/ngx_http_parse.c @ 539:5f4de8cf0d9d
Merge with current.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Tue, 15 Sep 2009 03:43:40 +0400 |
parents | 0161f3197817 |
children | 4c5d2c627a6c |
comparison
equal
deleted
inserted
replaced
522:40fd8d7b82f9 | 539:5f4de8cf0d9d |
---|---|
737 | 737 |
738 switch (state) { | 738 switch (state) { |
739 | 739 |
740 /* first char */ | 740 /* first char */ |
741 case sw_start: | 741 case sw_start: |
742 r->header_name_start = p; | |
742 r->invalid_header = 0; | 743 r->invalid_header = 0; |
743 | 744 |
744 switch (ch) { | 745 switch (ch) { |
745 case CR: | 746 case CR: |
746 r->header_end = p; | 747 r->header_end = p; |
749 case LF: | 750 case LF: |
750 r->header_end = p; | 751 r->header_end = p; |
751 goto header_done; | 752 goto header_done; |
752 default: | 753 default: |
753 state = sw_name; | 754 state = sw_name; |
754 r->header_name_start = p; | |
755 | 755 |
756 c = lowcase[ch]; | 756 c = lowcase[ch]; |
757 | 757 |
758 if (c) { | 758 if (c) { |
759 hash = ngx_hash(0, c); | 759 hash = ngx_hash(0, c); |
1132 #if (NGX_WIN32) | 1132 #if (NGX_WIN32) |
1133 case '\\': | 1133 case '\\': |
1134 #endif | 1134 #endif |
1135 case '/': | 1135 case '/': |
1136 state = sw_slash; | 1136 state = sw_slash; |
1137 u -= 4; | 1137 u -= 5; |
1138 if (u < r->uri.data) { | 1138 for ( ;; ) { |
1139 return NGX_HTTP_PARSE_INVALID_REQUEST; | 1139 if (u < r->uri.data) { |
1140 } | 1140 return NGX_HTTP_PARSE_INVALID_REQUEST; |
1141 while (*(u - 1) != '/') { | 1141 } |
1142 if (*u == '/') { | |
1143 u++; | |
1144 break; | |
1145 } | |
1142 u--; | 1146 u--; |
1143 } | 1147 } |
1144 break; | 1148 break; |
1145 case '%': | 1149 case '%': |
1146 quoted_state = state; | 1150 quoted_state = state; |