mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-02-22 04:22:07 +00:00
TEMP: try fix mailbox issue
This commit is contained in:
parent
811eb3840c
commit
5bd51bc6b7
@ -269,7 +269,8 @@ if utils.USE_THP:
|
|||||||
)
|
)
|
||||||
|
|
||||||
channel.sessions[new_session.session_id] = new_session
|
channel.sessions[new_session.session_id] = new_session
|
||||||
loop.schedule(new_session.handle())
|
new_session.handle_spawn = loop.spawn(new_session.handle())
|
||||||
|
loop.schedule(new_session.handle_spawn)
|
||||||
|
|
||||||
return Success(message="New session created.")
|
return Success(message="New session created.")
|
||||||
|
|
||||||
|
@ -382,7 +382,8 @@ async def _handle_state_ENCRYPTED_TRANSPORT(ctx: Channel, message_length: int) -
|
|||||||
s = SeedlessSessionContext(ctx, session_id)
|
s = SeedlessSessionContext(ctx, session_id)
|
||||||
|
|
||||||
ctx.sessions[session_id] = s
|
ctx.sessions[session_id] = s
|
||||||
loop.schedule(s.handle())
|
s.handle_spawn = loop.spawn(s.handle())
|
||||||
|
loop.schedule(s.handle_spawn)
|
||||||
|
|
||||||
elif ctx.sessions[session_id].get_session_state() is SessionState.UNALLOCATED:
|
elif ctx.sessions[session_id].get_session_state() is SessionState.UNALLOCATED:
|
||||||
raise ThpUnallocatedSessionError(session_id)
|
raise ThpUnallocatedSessionError(session_id)
|
||||||
@ -390,18 +391,20 @@ async def _handle_state_ENCRYPTED_TRANSPORT(ctx: Channel, message_length: int) -
|
|||||||
s = ctx.sessions[session_id]
|
s = ctx.sessions[session_id]
|
||||||
update_session_last_used(s.channel_id, (s.session_id).to_bytes(1, "big"))
|
update_session_last_used(s.channel_id, (s.session_id).to_bytes(1, "big"))
|
||||||
|
|
||||||
s.incoming_message.put(
|
message = Message(
|
||||||
Message(
|
message_type,
|
||||||
message_type,
|
buffer[
|
||||||
buffer[
|
INIT_HEADER_LENGTH
|
||||||
INIT_HEADER_LENGTH
|
+ MESSAGE_TYPE_LENGTH
|
||||||
+ MESSAGE_TYPE_LENGTH
|
+ SESSION_ID_LENGTH : message_length
|
||||||
+ SESSION_ID_LENGTH : message_length
|
- CHECKSUM_LENGTH
|
||||||
- CHECKSUM_LENGTH
|
- TAG_LENGTH
|
||||||
- TAG_LENGTH
|
],
|
||||||
],
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
if not s.incoming_message.is_empty():
|
||||||
|
await s.handle_spawn
|
||||||
|
s.incoming_message.clear()
|
||||||
|
s.incoming_message.put(message)
|
||||||
|
|
||||||
|
|
||||||
async def _handle_pairing(ctx: Channel, message_length: int) -> None:
|
async def _handle_pairing(ctx: Channel, message_length: int) -> None:
|
||||||
|
@ -34,6 +34,7 @@ class GenericSessionContext(Context):
|
|||||||
self.channel: Channel = channel
|
self.channel: Channel = channel
|
||||||
self.session_id: int = session_id
|
self.session_id: int = session_id
|
||||||
self.incoming_message = loop.mailbox()
|
self.incoming_message = loop.mailbox()
|
||||||
|
self.handle_spawn: loop.spawn | None = None
|
||||||
|
|
||||||
async def handle(self) -> None:
|
async def handle(self) -> None:
|
||||||
if __debug__ and utils.ALLOW_DEBUG_MESSAGES:
|
if __debug__ and utils.ALLOW_DEBUG_MESSAGES:
|
||||||
@ -51,7 +52,8 @@ class GenericSessionContext(Context):
|
|||||||
next_message = None
|
next_message = None
|
||||||
try:
|
try:
|
||||||
if await self._handle_message(message):
|
if await self._handle_message(message):
|
||||||
loop.schedule(self.handle())
|
self.handle_spawn = loop.spawn(self.handle())
|
||||||
|
loop.schedule(self.handle_spawn)
|
||||||
return
|
return
|
||||||
except UnexpectedMessageException as unexpected:
|
except UnexpectedMessageException as unexpected:
|
||||||
# The workflow was interrupted by an unexpected message. We need to
|
# The workflow was interrupted by an unexpected message. We need to
|
||||||
|
Loading…
Reference in New Issue
Block a user