#41236 [Opn-Asn]: regression with SSL connections since fix for #39571

2007-05-10 Thread sniper
 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:  iliaa


Previous Comments:


[2007-05-10 01:08:17] judas dot iscariote at gmail dot com

Ilia sorry, but I dont see why this bug is bogus..

1. there is no way to determine if the stream has gone away, nor it if
is has timeout (socket starts with a 10sec timeout and then I set
socket_set_timeout($j, 5).. but it loops forever..

2. and if is bogus.. why this code works in every single other PHP
version ? it broke only in 5.2.1 !!

did you actually read and try the code above ? :?



[2007-05-09 23:15:35] [EMAIL PROTECTED]

Sorry, but your problem does not imply a bug in PHP itself.  For a
list of more appropriate places to ask for help using PHP, please
visit http://www.php.net/support.php as this bug system is not the
appropriate forum for asking support questions.  Due to the volume
of reports we can not explain in detail here why your report is not
a bug.  The support channels will be able to provide an explanation
for you.

Thank you for your interest in PHP.

The thing is that the original SSL code was working in an identical 
manner.

Adding var_dump() shows that the return value of the 
stream_get_meta_data() or feof() did not change.



[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=41236edit=1


#41236 [Opn-Asn]: regression with SSL connections since fix for #39571

2007-04-30 Thread tony2001
 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=41236edit=1