From:             sempasha at gmail dot com
Operating system: Windows 7, CentOS 6.3
PHP version:      5.3.14
Package:          Network related
Bug Type:         Bug
Bug description:stream_set_timeout does not affect on sll socket connections

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 bug report at https://bugs.php.net/bug.php?id=62605&edit=1
-- 
Try a snapshot (PHP 5.4):            
https://bugs.php.net/fix.php?id=62605&r=trysnapshot54
Try a snapshot (PHP 5.3):            
https://bugs.php.net/fix.php?id=62605&r=trysnapshot53
Try a snapshot (trunk):              
https://bugs.php.net/fix.php?id=62605&r=trysnapshottrunk
Fixed in SVN:                        
https://bugs.php.net/fix.php?id=62605&r=fixed
Fixed in SVN and need be documented: 
https://bugs.php.net/fix.php?id=62605&r=needdocs
Fixed in release:                    
https://bugs.php.net/fix.php?id=62605&r=alreadyfixed
Need backtrace:                      
https://bugs.php.net/fix.php?id=62605&r=needtrace
Need Reproduce Script:               
https://bugs.php.net/fix.php?id=62605&r=needscript
Try newer version:                   
https://bugs.php.net/fix.php?id=62605&r=oldversion
Not developer issue:                 
https://bugs.php.net/fix.php?id=62605&r=support
Expected behavior:                   
https://bugs.php.net/fix.php?id=62605&r=notwrong
Not enough info:                     
https://bugs.php.net/fix.php?id=62605&r=notenoughinfo
Submitted twice:                     
https://bugs.php.net/fix.php?id=62605&r=submittedtwice
register_globals:                    
https://bugs.php.net/fix.php?id=62605&r=globals
PHP 4 support discontinued:          
https://bugs.php.net/fix.php?id=62605&r=php4
Daylight Savings:                    https://bugs.php.net/fix.php?id=62605&r=dst
IIS Stability:                       
https://bugs.php.net/fix.php?id=62605&r=isapi
Install GNU Sed:                     
https://bugs.php.net/fix.php?id=62605&r=gnused
Floating point limitations:          
https://bugs.php.net/fix.php?id=62605&r=float
No Zend Extensions:                  
https://bugs.php.net/fix.php?id=62605&r=nozend
MySQL Configuration Error:           
https://bugs.php.net/fix.php?id=62605&r=mysqlcfg

Reply via email to