diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-10-14 06:34:20 +0400 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-10-14 06:34:20 +0400 |
commit | 4a4575686eca96e7d393ba5c08ae3549bed2c1f0 (patch) | |
tree | 6090ec57858e4ba466b1fabb96fc515d09a27214 /networking/httpd.c | |
parent | 9435993b01d789ebb984457ca2ba0eec627470db (diff) |
httpd: fix bug where we were trying to read more POSTDATA than content-length
Diffstat (limited to 'networking/httpd.c')
-rw-r--r-- | networking/httpd.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/networking/httpd.c b/networking/httpd.c index 61185025c..82755a08a 100644 --- a/networking/httpd.c +++ b/networking/httpd.c @@ -1051,6 +1051,17 @@ static NOINLINE void cgi_io_loop_and_exit(int fromCgi_rd, int toCgi_wr, int post * and send it to the peer. So please no SIGPIPEs! */ signal(SIGPIPE, SIG_IGN); + // We inconsistently handle a case when more POSTDATA from network + // is coming than we expected. We may give *some part* of that + // extra data to CGI. + + //if (hdr_cnt > post_len) { + // /* We got more POSTDATA from network than we expected */ + // hdr_cnt = post_len; + //} + post_len -= hdr_cnt; + /* post_len - number of POST bytes not yet read from network */ + /* NB: breaking out of this loop jumps to log_and_exit() */ out_cnt = 0; while (1) { |