comparison src/http/ngx_http_parse.c @ 521:6f00349b98e5 release-0.1.35

nginx-0.1.35-RELEASE import *) Feature: the "working_directory" directive. *) Feature: the "port_in_redirect" directive. *) Bugfix: the segmentation fault was occurred if the backend response header was in several packets; the bug had appeared in 0.1.29. *) Bugfix: if more than 10 servers were configured or some server did not use the "listen" directive, then the segmentation fault was occurred on the start. *) Bugfix: the segmentation fault might occur if the response was bigger than the temporary file. *) Bugfix: nginx returned the 400 response on requests like "GET http://www.domain.com/uri HTTP/1.0"; the bug had appeared in 0.1.28.
author Igor Sysoev <igor@sysoev.ru>
date Tue, 07 Jun 2005 15:56:31 +0000
parents c12967aadd87
children 58475592100c
comparison
equal deleted inserted replaced
520:1fecc7e0d717 521:6f00349b98e5
110 110
111 /* space* before URI */ 111 /* space* before URI */
112 case sw_spaces_before_uri: 112 case sw_spaces_before_uri:
113 113
114 c = (u_char) (ch | 0x20); 114 c = (u_char) (ch | 0x20);
115 if (c >= 'a' && c <= 'f') { 115 if (c >= 'a' && c <= 'z') {
116 r->schema_start = p; 116 r->schema_start = p;
117 state = sw_schema; 117 state = sw_schema;
118 break; 118 break;
119 } 119 }
120 120
131 break; 131 break;
132 132
133 case sw_schema: 133 case sw_schema:
134 134
135 c = (u_char) (ch | 0x20); 135 c = (u_char) (ch | 0x20);
136 if (c >= 'a' && c <= 'f') { 136 if (c >= 'a' && c <= 'z') {
137 break; 137 break;
138 } 138 }
139 139
140 switch (ch) { 140 switch (ch) {
141 case ':': 141 case ':':
169 break; 169 break;
170 170
171 case sw_host: 171 case sw_host:
172 172
173 c = (u_char) (ch | 0x20); 173 c = (u_char) (ch | 0x20);
174 if (c >= 'a' && c <= 'f') { 174 if (c >= 'a' && c <= 'z') {
175 break; 175 break;
176 } 176 }
177 177
178 if ((ch >= '0' && ch <= '9') || ch == '.' || ch == '-') 178 if ((ch >= '0' && ch <= '9') || ch == '.' || ch == '-')
179 { 179 {
213 213
214 /* check "/.", "//", "%", and "\" (Win32) in URI */ 214 /* check "/.", "//", "%", and "\" (Win32) in URI */
215 case sw_after_slash_in_uri: 215 case sw_after_slash_in_uri:
216 216
217 c = (u_char) (ch | 0x20); 217 c = (u_char) (ch | 0x20);
218 if (c >= 'a' && c <= 'f') { 218 if (c >= 'a' && c <= 'z') {
219 state = sw_check_uri; 219 state = sw_check_uri;
220 break; 220 break;
221 } 221 }
222 222
223 if (ch >= '0' && ch <= '9') { 223 if (ch >= '0' && ch <= '9') {
275 275
276 /* check "/", "%" and "\" (Win32) in URI */ 276 /* check "/", "%" and "\" (Win32) in URI */
277 case sw_check_uri: 277 case sw_check_uri:
278 278
279 c = (u_char) (ch | 0x20); 279 c = (u_char) (ch | 0x20);
280 if (c >= 'a' && c <= 'f') { 280 if (c >= 'a' && c <= 'z') {
281 break; 281 break;
282 } 282 }
283 283
284 if (ch >= '0' && ch <= '9') { 284 if (ch >= '0' && ch <= '9') {
285 break; 285 break;