Wrench icon indicating copy to clipboard operation
Wrench copied to clipboard

To hide "socket_import_stream(): cannot represent a stream of type tcp_socket/ssl as a Socket Descriptor"

Open manoletto opened this issue 5 years ago • 1 comments

To set the TCP_NODELAY socket option only when it is possible, and disable warning message :

socket_import_stream(): cannot represent a stream of type tcp_socket/ssl as a Socket Descriptor

in Wrench/lib/Socket/ServerSocket.php accept() method (on line 67),

i suggest this :

        if (!$new) {
            throw new ConnectionException(socket_strerror(socket_last_error($new)));
        }

++      if(($sock = @socket_import_stream($new))>0){
--      socket_set_option(socket_import_stream($new), SOL_TCP, TCP_NODELAY, 1);
++       	socket_set_option($sock, SOL_TCP, TCP_NODELAY, 1);
++      }

        return $new;

manoletto avatar Nov 23 '19 14:11 manoletto

Better solution :

in Wrench/lib/Socket/ServerSocket.php getSocketStreamContextOptions() method,

add

$options['tcp_nodelay'] = TRUE;

and remove socket_set_option() call in accept() method.

It works ;-)

manoletto avatar Nov 30 '19 14:11 manoletto