comparison src/http/ngx_http_parse.c @ 24:77c7629a2627

nginx-0.0.1-2002-12-10-21:05:12 import
author Igor Sysoev <igor@sysoev.ru>
date Tue, 10 Dec 2002 18:05:12 +0000
parents f540a63026c9
children 53cb81681040
comparison
equal deleted inserted replaced
23:f540a63026c9 24:77c7629a2627
310 r->state = state; 310 r->state = state;
311 return NGX_AGAIN; 311 return NGX_AGAIN;
312 } 312 }
313 } 313 }
314 314
315 int ngx_read_http_header_line(ngx_http_request_t *r) 315 int ngx_read_http_header_line(ngx_http_request_t *r, ngx_hunk_t *h)
316 { 316 {
317 char c, ch; 317 char c, ch;
318 char *p; 318 char *p;
319 enum { 319 enum {
320 sw_start = 0, 320 sw_start = 0,
327 sw_done, 327 sw_done,
328 sw_header_done 328 sw_header_done
329 } state; 329 } state;
330 330
331 state = r->state; 331 state = r->state;
332 p = r->header_in->pos.mem; 332 p = h->pos.mem;
333 333
334 while (p < r->header_in->last.mem && state < sw_done) { 334 while (p < h->last.mem && state < sw_done) {
335 ch = *p++; 335 ch = *p++;
336 336
337 /* 337 /*
338 printf("\nstate: %d, pos: %x, end: %x, char: '%c' buf: %s", 338 printf("\nstate: %d, pos: %x, end: %x, char: '%c' buf: %s",
339 state, p, r->header_in->last.mem, ch, p); 339 state, p, h->last.mem, ch, p);
340 */ 340 */
341 341
342 switch (state) { 342 switch (state) {
343 343
344 /* first char */ 344 /* first char */
468 } 468 }
469 break; 469 break;
470 } 470 }
471 } 471 }
472 472
473 r->header_in->pos.mem = p; 473 h->pos.mem = p;
474 474
475 if (state == sw_done) { 475 if (state == sw_done) {
476 r->state = sw_start; 476 r->state = sw_start;
477 return NGX_OK; 477 return NGX_OK;
478 } else if (state == sw_header_done) { 478 } else if (state == sw_header_done) {