php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #70939 socket_import_stream does not indicate missing support for SSL
Submitted: 2015-11-18 20:33 UTC Modified: 2016-02-22 17:52 UTC
Votes:8
Avg. Score:4.9 ± 0.3
Reproduced:7 of 7 (100.0%)
Same Version:2 (28.6%)
Same OS:6 (85.7%)
From: lcharron at meditech dot com Assigned:
Status: Open Package: Sockets related
PHP Version: 5.5.30 OS: Any
Private report: No CVE-ID:
Have you experienced this issue?
Rate the importance of this bug to you:

 [2015-11-18 20:33 UTC] lcharron at meditech dot com
Description:
------------
You should be able to obtain the socket from a socket-based SSL stream so that socket options (ex. SO_KEEPALIVE) can be set.
The documentation makes no mention that this is not possible.

Test script:
---------------
$host = "host";
$port = "443";
$stream = stream_socket_client("ssl://{$host}:{$port}");
$socket = socket_import_stream($stream);
if ($socket) {

    socket_set_option($socket, SOL_SOCKET, SO_KEEPALIVE, 1);
}

Expected result:
----------------
socket_import_stream should return the underlying socket so options can be set.

Actual result:
--------------
socket_import_stream returns null and the following warning is emitted:
Warning: socket_import_stream(): cannot represent a stream of type tcp_socket/ssl as a Socket Descriptor in ...


Patches

Add a Patch

Pull Requests

Pull requests:

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2015-12-12 18:16 UTC] contact at sshilko dot com
Same issue, i thought its "by design", at the moment there is no option to enable SO_KEEPALIVE when using stream_socket_client() with SSL/TLS
 [2016-02-21 19:47 UTC] adrian dot sandu at asandu dot eu
Any updates/workarounds ?
 [2016-02-22 17:52 UTC] lcharron at meditech dot com
I could find no work around.
 [2016-02-23 10:02 UTC] adrian dot sandu at asandu dot eu
Someone recommended:

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($socket, SOL_SOCKET, SO_KEEPALIVE, 1);
socket_connect($socket, $host, $port);
 
PHP Copyright © 2001-2017 The PHP Group
All rights reserved.
Last updated: Tue Aug 29 15:01:52 2017 UTC