From: judas dot iscariote at gmail dot com Operating system: linux 32/64bit, Win32 PHP version: 5CVS-2007-04-30 (CVS) PHP Bug Type: Streams related Bug description: regression with SSL connections since fix for #39571
Description: ------------ Since PHP 5.2.1, our application that has jabber stopped working.all previuos PHP version works fine, this regression is caused by the fix for bug #39571,reverting xp_ssl.c to the version shipped with 5.2.0 solves the problem. Reproduce code: --------------- ./configure --with-openssl <?php error_reporting(E_ALL); $j = fsockopen('ssl://jabber.org', 5223, $errorno, $errorstr, 10); socket_set_blocking($j, 0); socket_set_timeout($j, 5); fwrite($j,"<?xml version='1.0' encoding='UTF-8' ?>"); fwrite($j, "<stream:stream to='jabber.org' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>"); $data = ''; // Wait for a response until timeout is reached $start = time(); $data = ''; $timeout = 10; $wait = false; do { $read = trim(fread($j, 4096)); $data .= $read; // ok.. this check aint part of the original code // that breaks,but check if we timed out of reached eof..anyway.. $foo = stream_get_meta_data($j); if(feof($j) || $foo['timed_out'] || $foo['eof']) break; // yeah, we know aint nice, but works in **any** other PHP version. } while (time() <= $start + $timeout && ($wait || $data == '' || $read != '' || (substr(rtrim($data), -1) != '>'))); fclose($j); var_dump($data); ?> Expected result: ---------------- response from the server var_dump'ed as in (all) previous versions Actual result: -------------- Fatal error: Maximum execution time of **30** seconds exceeded...an xdebug session reveals that the script hang, in a **single** fread() call an strace shows something hangs permanently with EAGAIN signal.. (probably the loop in xp_ssl.c from line 398 to 410), note that checking if has reached EOF or if the stream times out does not help either. -- Edit bug report at http://bugs.php.net/?id=41236&edit=1 -- Try a CVS snapshot (PHP 4.4): http://bugs.php.net/fix.php?id=41236&r=trysnapshot44 Try a CVS snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=41236&r=trysnapshot52 Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=41236&r=trysnapshot60 Fixed in CVS: http://bugs.php.net/fix.php?id=41236&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=41236&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=41236&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=41236&r=needscript Try newer version: http://bugs.php.net/fix.php?id=41236&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=41236&r=support Expected behavior: http://bugs.php.net/fix.php?id=41236&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=41236&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=41236&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=41236&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=41236&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=41236&r=dst IIS Stability: http://bugs.php.net/fix.php?id=41236&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=41236&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=41236&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=41236&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=41236&r=mysqlcfg