Mercurial > hg > nginx
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) { |