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;