Edit report at https://bugs.php.net/bug.php?id=60826&edit=1
ID: 60826
Comment by: florian dot fernandez at navaho dot fr
Reported by: clarkwise at gmail dot com
Summary: raw POST data missing with chunked encoding, FastCGI
Status: Assigned
Type: Bug
Package: CGI/CLI related
Operating System: Windows XP
PHP Version: 5.3.9
Assigned To: ab
Block user comment: N
Private report: N
New Comment:
@ andres at fenestrae dot com
Have you been able to try what you suggested in your last post ?
Previous Comments:
------------------------------------------------------------------------
[2012-04-11 13:24:05] andres at fenestrae dot com
The problem lies in php-cgi.exe.
I have been able to reproduce the problem on IIS 7.5.
In Fast-cgi the data is delivered using method similar to chunking.
In case of "Transfer-Encoding: chunked" IIS supplies Content-length:-1 in the request
data, which is casted to uint in sapi_cgi_read_post. Causing the routine to read data until it has
read the full 4G (2^32-1).
Also, both the methods sapi_cgi_read_post(cgi_main.c) and fcgi_read(fastcgi.c) try to read the
complete buffer time after time, causing the end-marker (0-sized chunk) only to be seen when it
would be at buffer-boundary. However the sapi_cgi_read_post funtion is called several times after
the actual content has been read causing the fcgi_read method to block.
I expect similar cause to apply for apache.
Solution appears
1) do not loop in fcgi_read; this way when reading the final marker, it is returned to the calling
code.
2) Set SG(request_info).content_length to SG(read_post_bytes) + read_bytes when tmp_read_bytes ==0
&& SG(request_info).content_length == -1
------------------------------------------------------------------------
[2012-04-03 13:02:34] florian dot fernandez at navaho dot fr
@ab at php dot net
Unfortunately, I won't be able to test with nginx because the system administrators won't
let me install it (Only Apache is allowed). Sorry for the inconvenience. I'll try to open a new
bug on Apache bug list or mod_fcigd bug list if I find it : maybe they'll look into it.
------------------------------------------------------------------------
[2012-03-27 20:26:14] clarkwise at gmail dot com
I finally got my hands on Windows Server 2008 running IIS 7.0.
Same problem; when POST request is chunked, the response times out.
Perhaps I'm missing a setting that would enable the receipt of
chunked incoming requests, but I have only read about settings
that chunk the outgoing response.
------------------------------------------------------------------------
[2012-03-27 13:34:28] ab@php.net
@florian dot fernandez at navaho dot fr
Looks like that. Could you try nginx+chunkin to confirm please?
------------------------------------------------------------------------
[2012-03-27 08:52:31] florian dot fernandez at navaho dot fr
So, it is not a PHP problem ?
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=60826
--
Edit this bug report at https://bugs.php.net/bug.php?id=60826&edit=1