mirror of
https://github.com/varun-r-mallya/py-libp2p.git
synced 2026-02-12 16:10:57 +00:00
Mplex: catch RawConnError when writing
Also, do nothing in `MplexStream.reset` if `MuxedConnUnavailable` is raised when sending the message.
This commit is contained in:
@ -166,7 +166,13 @@ class Mplex(IMuxedConn):
|
|||||||
:param _bytes: byte array to write
|
:param _bytes: byte array to write
|
||||||
:return: length written
|
: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)
|
return len(_bytes)
|
||||||
|
|
||||||
async def handle_incoming(self) -> None:
|
async def handle_incoming(self) -> None:
|
||||||
|
|||||||
@ -3,6 +3,7 @@ from typing import TYPE_CHECKING
|
|||||||
import trio
|
import trio
|
||||||
|
|
||||||
from libp2p.stream_muxer.abc import IMuxedStream
|
from libp2p.stream_muxer.abc import IMuxedStream
|
||||||
|
from libp2p.stream_muxer.exceptions import MuxedConnUnavailable
|
||||||
|
|
||||||
from .constants import HeaderTags
|
from .constants import HeaderTags
|
||||||
from .datastructures import StreamID
|
from .datastructures import StreamID
|
||||||
@ -189,7 +190,11 @@ class MplexStream(IMuxedStream):
|
|||||||
if self.is_initiator
|
if self.is_initiator
|
||||||
else HeaderTags.ResetReceiver
|
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_local_closed.set()
|
||||||
self.event_remote_closed.set()
|
self.event_remote_closed.set()
|
||||||
|
|||||||
Reference in New Issue
Block a user