diff --git a/libp2p/protocol_muxer/multiselect.py b/libp2p/protocol_muxer/multiselect.py index 91c1efed..99ad37f5 100644 --- a/libp2p/protocol_muxer/multiselect.py +++ b/libp2p/protocol_muxer/multiselect.py @@ -16,7 +16,7 @@ from .exceptions import ( MULTISELECT_PROTOCOL_ID = "/multistream/1.0.0" PROTOCOL_NOT_FOUND_MSG = "na" -DEFAULT_NEGOTIATE_TIMEOUT = 60 +DEFAULT_NEGOTIATE_TIMEOUT = 5 class Multiselect(IMultiselectMuxer): @@ -63,7 +63,10 @@ class Multiselect(IMultiselectMuxer): while True: try: - command = await communicator.read() + with trio.fail_after(DEFAULT_NEGOTIATE_TIMEOUT): + command = await communicator.read() + except trio.TooSlowError: + raise MultiselectError("handshake read timeout") except MultiselectCommunicatorError as error: raise MultiselectError() from error diff --git a/libp2p/protocol_muxer/multiselect_client.py b/libp2p/protocol_muxer/multiselect_client.py index f9f4ba34..74335241 100644 --- a/libp2p/protocol_muxer/multiselect_client.py +++ b/libp2p/protocol_muxer/multiselect_client.py @@ -19,7 +19,7 @@ from .exceptions import ( MULTISELECT_PROTOCOL_ID = "/multistream/1.0.0" PROTOCOL_NOT_FOUND_MSG = "na" -DEFAULT_NEGOTIATE_TIMEOUT = 60 +DEFAULT_NEGOTIATE_TIMEOUT = 5 class MultiselectClient(IMultiselectClient):