ID:               41236
 Updated by:       [EMAIL PROTECTED]
 Reported By:      judas dot iscariote at gmail dot com
-Status:           Open
+Status:           Assigned
 Bug Type:         Streams related
 Operating System: linux 32/64bit, Win32
 PHP Version:      5CVS-2007-04-30 (CVS)
-Assigned To:      
+Assigned To:      iliaa


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

[2007-04-30 07:20:11] judas dot iscariote at gmail dot com

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 this bug report at http://bugs.php.net/?id=41236&edit=1

Reply via email to