Mplex: catch RawConnError
when writing
Also, do nothing in `MplexStream.reset` if `MuxedConnUnavailable` is raised when sending the message.
This commit is contained in:
parent
f884bfa39e
commit
c0ab609559
|
@ -166,7 +166,13 @@ class Mplex(IMuxedConn):
|
|||
:param _bytes: byte array to write
|
||||
:return: length written
|
||||
"""
|
||||
await self.secured_conn.write(_bytes)
|
||||
try:
|
||||
await self.secured_conn.write(_bytes)
|
||||
except RawConnError as e:
|
||||
raise MplexUnavailable(
|
||||
"failed to write message to the underlying connection"
|
||||
) from e
|
||||
|
||||
return len(_bytes)
|
||||
|
||||
async def handle_incoming(self) -> None:
|
||||
|
|
|
@ -3,6 +3,7 @@ from typing import TYPE_CHECKING
|
|||
import trio
|
||||
|
||||
from libp2p.stream_muxer.abc import IMuxedStream
|
||||
from libp2p.stream_muxer.exceptions import MuxedConnUnavailable
|
||||
|
||||
from .constants import HeaderTags
|
||||
from .datastructures import StreamID
|
||||
|
@ -189,7 +190,11 @@ class MplexStream(IMuxedStream):
|
|||
if self.is_initiator
|
||||
else HeaderTags.ResetReceiver
|
||||
)
|
||||
await self.muxed_conn.send_message(flag, None, self.stream_id)
|
||||
# Try to send reset message to the other side. Ignore if there is anything wrong.
|
||||
try:
|
||||
await self.muxed_conn.send_message(flag, None, self.stream_id)
|
||||
except MuxedConnUnavailable:
|
||||
pass
|
||||
|
||||
self.event_local_closed.set()
|
||||
self.event_remote_closed.set()
|
||||
|
|
Loading…
Reference in New Issue
Block a user