Open capcarr opened 5 years ago
Hello @capcarr, probably your code hangs while trying to do sock.connect
as this is where the handshake operation is done, so I advice when warping the socket you use the timeout option to set timeout for the handshake operation. ussl.wrap_socket(sock, timeout=<seconds>)
see https://docs.pycom.io/firmwareapi/micropython/ussl/
@iwahdan88 Thank you for your reply.
Our tests show that the socket does connect, it is the read
method that hangs. Does the timeout
argument in the wrap_socket
method affect the read
and write
methods on the socket, or just the SSL handshake?
@capcarr No it affects only the Handshake, I tried your example code and I can see the problem. will update you with fix Asap.
System information: sysname='GPy' nodename='GPy' release='1.18.2.r7' version='v1.8.6-849-df9f237 on 2019-05-14' machine='GPy with ESP32'
When configuring a socket to use a timeout, if the socket has been wrapped with the
ussl.wrap_socket
method, the timeout is not honored.Given a socket
sock
which has been successfully connected to a host, trying to callsock.read
should returnNone
if the timeout is reached and there is nothing to read in the socket:But when the socket is wrapped with
ussl
, the timeout setting is ignored and theread
blocks forever:This also happens at least for the
readline
method.