Mercurial > hg > nginx
comparison src/http/ngx_http_request_body.c @ 1455:7f2adaebb81f
fix socket leak introduced in r1374 when request header and body was
in one packet and connection went to keep-alive state
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sat, 01 Sep 2007 16:40:19 +0000 |
parents | 65dd057f71c7 |
children | 698ea64f71e1 |
comparison
equal
deleted
inserted
replaced
1454:f497ed7682a7 | 1455:7f2adaebb81f |
---|---|
444 | 444 |
445 if (r->headers_in.content_length_n <= 0) { | 445 if (r->headers_in.content_length_n <= 0) { |
446 return NGX_OK; | 446 return NGX_OK; |
447 } | 447 } |
448 | 448 |
449 r->discard_body = 1; | |
450 | |
451 size = r->header_in->last - r->header_in->pos; | 449 size = r->header_in->last - r->header_in->pos; |
452 | 450 |
453 if (size) { | 451 if (size) { |
454 if (r->headers_in.content_length_n > size) { | 452 if (r->headers_in.content_length_n > size) { |
455 r->headers_in.content_length_n -= size; | 453 r->headers_in.content_length_n -= size; |
458 r->header_in->pos += (size_t) r->headers_in.content_length_n; | 456 r->header_in->pos += (size_t) r->headers_in.content_length_n; |
459 r->headers_in.content_length_n = 0; | 457 r->headers_in.content_length_n = 0; |
460 return NGX_OK; | 458 return NGX_OK; |
461 } | 459 } |
462 } | 460 } |
461 | |
462 r->discard_body = 1; | |
463 | 463 |
464 r->read_event_handler = ngx_http_read_discarded_request_body_handler; | 464 r->read_event_handler = ngx_http_read_discarded_request_body_handler; |
465 | 465 |
466 if (ngx_handle_read_event(rev, 0) == NGX_ERROR) { | 466 if (ngx_handle_read_event(rev, 0) == NGX_ERROR) { |
467 return NGX_HTTP_INTERNAL_SERVER_ERROR; | 467 return NGX_HTTP_INTERNAL_SERVER_ERROR; |