From 49c9ad04cd333dc61714bc25f3df472e367889d1 Mon Sep 17 00:00:00 2001 From: Roman Zeyde <roman.zeyde@satoshilabs.com> Date: Fri, 7 Mar 2025 21:25:49 +0200 Subject: [PATCH] feat(python): ignore unrelated responses Old responses may be still in the receive queue (blocking the device from handling new requests). Let's "flush" them before starting the test. [no changelog] --- python/src/trezorlib/transport/protocol.py | 10 +++++++++- python/src/trezorlib/transport/udp.py | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/python/src/trezorlib/transport/protocol.py b/python/src/trezorlib/transport/protocol.py index 4a2c129ec6..42f51a4b08 100644 --- a/python/src/trezorlib/transport/protocol.py +++ b/python/src/trezorlib/transport/protocol.py @@ -21,7 +21,7 @@ import struct from typing_extensions import Protocol as StructuralType -from . import MessagePayload, Transport +from . import MessagePayload, Timeout, Transport REPLEN = 64 @@ -82,6 +82,14 @@ class Protocol: def begin_session(self) -> None: if self.session_counter == 0: self.handle.open() + try: + # Drop queued responses to old requests + while True: + msg = self.handle.read_chunk(timeout=0.1) + LOG.warning("ignored: %s", msg) + except Timeout: + pass + self.session_counter += 1 def end_session(self) -> None: diff --git a/python/src/trezorlib/transport/udp.py b/python/src/trezorlib/transport/udp.py index a4652b6fbf..2a8d3e620f 100644 --- a/python/src/trezorlib/transport/udp.py +++ b/python/src/trezorlib/transport/udp.py @@ -28,7 +28,7 @@ from .protocol import ProtocolBasedTransport, ProtocolV1 if TYPE_CHECKING: from ..models import TrezorModel -SOCKET_TIMEOUT = 10 +SOCKET_TIMEOUT = 0.1 LOG = logging.getLogger(__name__)