Edit report at https://bugs.php.net/bug.php?id=62605&edit=1
ID: 62605
Comment by: bbroerman at bbroerman dot net
Reported by: sempasha at gmail dot com
Summary: stream_set_timeout does not affect on sll socket
connections
Status: Open
Type: Bug
Package: Network related
Operating System: Windows 7, CentOS 6.3
PHP Version: 5.3.14
Block user comment: N
Private report: N
New Comment:
My company despirately needs this to be fixed! We are experiencing the same
issue ( from within a PHP extension we are developing ). We really need this to
be able to support SSL with read timeouts!
Previous Comments:
------------------------------------------------------------------------
[2012-07-19 05:43:51] sempasha at gmail dot com
Description:
------------
Unable to set read timeout for socket which work with SSL connection by
stream_set_timeout function. In other case, when we use socket with non-SSL
connection, socket_set_timeout works fine. There are 2 potential problems:
1. stream_set_timeout returns TRUE, but does not works as expected
2. stream_set_timeout does not work for sockets with SSL connections
Related bugs are #23618, #35105, #43796, #47929.
Some patches attached to every related bug, but still not fixed in PHP. It's
hard to believe, that since year 2003 nothing was done on this problem.
Test script:
---------------
<?php
// test.php
// on port 8000 at 127.0.0.1 runs daemon, which accepts incoming connections
and nothing more
$socket = fsockopen('ssl://127.0.0.1', 8000, $errno, $errstr, 10);
if (!is_resource($socket))
die('Socket connection error '.$errno.', '.$errstr.' at line
'.__LINE__.' in file '.__FILE__);
if (!stream_set_timeout($socket, 1))
die('Unable to set stream timeout at line '.__LINE__.' ion file '.__FILE__);
if (!set_time_limit(2))
die('Unable to set time limit at line '.__LINE__.' ion file '.__FILE__);
$message = fread($socket, 1024).PHP_EOL;
$metadata = stream_get_meta_data($socket);
if ($metadata['timed_out'])
die('Stream is timed out at line '.__LINE__.' in file '.__FILE__);
Expected result:
----------------
Possible output variants:
1. socket open error
>test.php
Socket connection error SOCKET-OPEN-ERROR-CODE, SOCKET-OPEN-ERROR-TEXT at line
8 in file test.php
2. stream_set_timeout error
>test.php
Unable to set stream timeout at line 11 ion file test.php
3. stream_set_timeout works fine and reading breaked by timeout
>test.php
Stream is timed out at line 21 in file test.php
4. stream_set_timeout does not affect (despite the fact it returns TRUE) and
limit of script execution time exceeded
>test.php
Fatal error: Maximum execution time of 2 seconds exceeded in test.php on line 16
Actual result:
--------------
Real output variants:
1. socket open error
>test.php
Socket connection error SOCKET-OPEN-ERROR-CODE, SOCKET-OPEN-ERROR-TEXT at line
8 in file test.php
2. stream_set_timeout never return FALSE
>test.php
Unable to set stream timeout at line 11 ion file test.php
3. stream_set_timeout does not affect, reading never ends, empty output
>test.php
4. stream_set_timeout does not affect (despite the fact it returns TRUE) but
limit of script execution time will never reached, empty output, reading never
ends
>test.php
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=62605&edit=1