Skip to content
This repository was archived by the owner on Sep 16, 2024. It is now read-only.
This repository was archived by the owner on Sep 16, 2024. It is now read-only.

Socket timeout not honored with SSL #315

Open
@capcarr

Description

@capcarr

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 call sock.read should return None if the timeout is reached and there is nothing to read in the socket:

import usocket

sock = usocket.socket()
sock.settimeout(5)

sock.connect((host, port))

t = sock.read(1)

# after timeout, t is None
print(t is None)

But when the socket is wrapped with ussl, the timeout setting is ignored and the read blocks forever:

import usocket
import ussl

sock = usocket.socket()
sock = ussl.wrap_socket(sock)
sock.settimeout(5)

sock.connect((host, port))

# this hangs indefinitely
t = sock.read(1)

This also happens at least for the readline method.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions