#27552 [NoF->Opn]: fwrite fails after writing 8k bytes
| From: | jeroen dot pulles at redslider dot net | Date: | Tue, 13 Apr 2004 21:47:08 +0000 |
| Subject: | #27552 [NoF->Opn]: fwrite fails after writing 8k bytes | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-58088@lists.php.net to get a copy of this message | ||
ID: 27552
User updated by: jeroen dot pulles at redslider dot net
Reported By: jeroen dot pulles at redslider dot net
-Status: No Feedback
+Status: Open
Bug Type: Sockets related
Operating System: win32
PHP Version: 5CVS-2004-03-10 (dev)
New Comment:
I am still experiencing the problem with 5.0.0.0 RC2-dev (April 12th
windows snapshot).
I tried the code on two networks. One network has a transparent
firewall as far as HTTP traffic is concerned. The other is my home
network, behind a simple router/nat solution. I have no reason to
believe anything is tampering the data; Especially since a smaller
message body _does_ work.
I put up a simple test case on my website:
http://www.redslider.net/test01/
I have no problem running fwrite_test.php with a small message size.
However, the code still breaks when writing more than 8192 bytes.
What I find weird is that the code runs fine, in any case, on a
localhost webserver/website, but breaks on any remote host,
irrespective of webserver software etcetera etcetera. I'm puzzled.
Help is appreciated,
jeroen
Previous Comments:
------------------------------------------------------------------------
[2004-04-12 17:56:56] sniper@php.net
No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Open". Thank you.
------------------------------------------------------------------------
[2004-04-07 06:03:29] sniper@php.net
I can't reproduce this either. Are you sure there isn't some firewall
or something in between that might somehow break this..?
------------------------------------------------------------------------
[2004-03-11 02:53:07] jeroen dot pulles at redslider dot net
I am using the latest windows binary snapshot.
(It's just that I'm not using the regular cmd.exe for command line
work, but cygwin's bash.exe shell; Which is probably irrelevant anyway.
For the record: I get the same result when running the reproduce code
from cmd.exe.)
------------------------------------------------------------------------
[2004-03-10 12:06:25] wez@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php5-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php5-win32-latest.zip
Please try a real windows binary, not a cygwin emulation and see if the
problem persists.
------------------------------------------------------------------------
[2004-03-10 11:39:19] jeroen dot pulles at redslider dot net
Description:
------------
When writing data to a socket, the program fails when writing more than
8192 bytes, irrespective of a given buffersize.
Specifics:
- Windows 2000
- 5.0.0.0 RC1-dev (-200403101130)
- Command line interface (using cygwin)
- Almost no modules, just php_sockets.dll
- Default php.ini(-dist), apart from
E_ALL for the error logging
Note:
The socket shouldn't be blocking, I didn't ask for it, and
set_stream_blocking(true) doesn't change it; I'm guessing this is some
irrelevant (for me) implementation detail for PHP.
Note:
Writing to localhost does work.
Note:
Writing less than 8192 bytes does work (well, didn't check the exact
size where failure starts to happen).
Note:
No problems on my Linux box and PHP 5.*.
Reproduce code:
---------------
<?php
$socket = fsockopen('some-other-host', 80, $errno, $errmessage);
$message_body = '';
for ($i = 0; $i < 4000; $i++) $message_body .= 'yadda ';
$contentlength = strlen($message_body);
$message = "POST / HTTP/1.0\r\n";
$message .= "Host: some-other-host\r\n";
$message .= "Content-Type: text/plain\r\n";
$message .= "Content-Length: $contentlength\r\n";
$message .= "\r\n";
$message .= $message_body;
fwrite($socket, $message);
fclose($socket);
print($errmessage);
print("Done\n");
?>
Expected result:
----------------
Expecting to just see "Done"
Actual result:
--------------
JeroenP@geneva$ bin/php fwrite-bug.php
Notice: fwrite(): send of 8192 bytes failed with errno=0 A non-blocking
socket o
peration could not be completed immediately.
in C:\home\wwwroot\aria\fwrite-bug.php on line 12
Done
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=27552&edit=1