Check if entry exists in dictionary before delete

This commit is contained in:
NIC619 2019-11-17 21:52:05 +08:00
parent 64c49f809f
commit c0522c1bd9
No known key found for this signature in database
GPG Key ID: 570C35F5C2D51B17
3 changed files with 8 additions and 4 deletions

View File

@ -96,6 +96,7 @@ class MessageCache:
last_entries: List[CacheEntry] = self.history[len(self.history) - 1] last_entries: List[CacheEntry] = self.history[len(self.history) - 1]
for entry in last_entries: for entry in last_entries:
if entry.mid in self.msgs:
del self.msgs[entry.mid] del self.msgs[entry.mid]
i: int = len(self.history) - 2 i: int = len(self.history) - 2

View File

@ -297,6 +297,7 @@ class Mplex(IMuxedConn):
# the entry of this stream, to avoid others from accessing it. # the entry of this stream, to avoid others from accessing it.
if is_local_closed: if is_local_closed:
async with self.streams_lock: async with self.streams_lock:
if stream_id in self.streams:
del self.streams[stream_id] del self.streams[stream_id]
async def _handle_reset(self, stream_id: StreamID) -> None: async def _handle_reset(self, stream_id: StreamID) -> None:
@ -315,6 +316,7 @@ class Mplex(IMuxedConn):
if not stream.event_local_closed.is_set(): if not stream.event_local_closed.is_set():
stream.event_local_closed.set() stream.event_local_closed.set()
async with self.streams_lock: async with self.streams_lock:
if stream_id in self.streams:
del self.streams[stream_id] del self.streams[stream_id]
async def _cleanup(self) -> None: async def _cleanup(self) -> None:

View File

@ -180,6 +180,7 @@ class MplexStream(IMuxedStream):
if _is_remote_closed: if _is_remote_closed:
# Both sides are closed, we can safely remove the buffer from the dict. # Both sides are closed, we can safely remove the buffer from the dict.
async with self.muxed_conn.streams_lock: async with self.muxed_conn.streams_lock:
if self.stream_id in self.muxed_conn.streams:
del self.muxed_conn.streams[self.stream_id] del self.muxed_conn.streams[self.stream_id]
async def reset(self) -> None: async def reset(self) -> None: