ID: 23837
Updated by: [email]iliaaphp.net[/email]
Reported By: dietrich dot ayala at foundstone dot com
-Status: Assigned
+Status: Feedback
Bug Type: Sockets related
Operating System: windows 2000
PHP Version: 4.3.2RC4
Assigned To: wez
New Comment:

Please try using this CVS snapshot:

[url]http://snaps.php.net/php4-STABLE-latest.tar.gz[/url]

For Windows:

[url]http://snaps.php.net/win32/php4-win32-STABLE-latest.zip[/url]




Previous Comments:
------------------------------------------------------------------------

[2003-05-27 17:40:23] dietrich dot ayala at foundstone dot com

Repro script is below. i tested w/ w2k+FastCGI and w2k+isapi, and could
repro the behaviour w/ both.

steps:
1. run the script
2. take host down and back up, or even just cycle the listening app on
the specified port. either one will repro the bug.
3. run the script again. if you're using isapi or fastcgi, it'll
attempt to reuse the connection, but won't reconnect, and will display
the behaviour described.

<?php

$host = 'd-w2kserv';
$port = 80;

// open connection
if(!$fp = pfsockopen($host, $port, $errno, $error_str)){
die('error: '.$error_str.$phperrormsg);
} else {

// write data
$requestMsg = "GET / HTTP/1.1\r\nHost: $host\r\n\r\n";
if(!fwrite($fp, $requestMsg)) {
die('error: '.$phperrormsg);
}

// read data
do {

// array of connections
$read = array($fp);

// use stream_select() for non-busy wait
if (false === ($num_changed_streams = stream_select($read, $write =
NULL, $except = NULL, 0))) {

die('Stream_select returned error: '.$phperrormsg);

// At least on one of the streams something interesting happened
} elseif ($num_changed_streams > 0) {

if( !$data = fgets($fp, 8192) ){

die('couldnt get data from socket, or socket returned no data');

}
print $data;

// no more data
if (feof($fp) || $data === false || strlen($data) == 0) {
break;
}

}

} while(true);
}
?>

------------------------------------------------------------------------

[2003-05-27 17:16:27] [email]sniperphp.net[/email]

No example script here either. Can not reproduce.


------------------------------------------------------------------------

[2003-05-27 14:47:45] [email]wezphp.net[/email]

Assigning to myself; it would be good if some other people could verify
if this problem exists on other platforms, and if this is a critical
issue.


------------------------------------------------------------------------

[2003-05-27 12:52:08] dietrich dot ayala at foundstone dot com

If I make a persistent connection to a host, then cycle the host,
subsequent requests to pfsockopen return a connection (no error), but
any subsequent calls to fgets() (and any socket-accessing kin) using
the pointer fail w/ bad connection errors.

Previously, I reported this problem when the host *never* comes back
up, and Wez fixed that. But it appears this also happens when the host
is cycled as well.

------------------------------------------------------------------------


--
Edit this bug report at [url]http://bugs.php.net/?id=23837&edit=1[/url]