Pārlūkot izejas kodu

Fix disconnects when there is a large send queue

The message delivery confirmation didn't send the PING immediately, so the remaining send queue blocked it, which would then cause the confirmation to fail, all messages to be requeued, and the connection to be closed.
master
JustAnotherArchivist pirms 1 gada
vecāks
revīzija
577e10c80b
1 mainītis faili ar 1 papildinājumiem un 1 dzēšanām
  1. +1
    -1
      http2irc.py

+ 1
- 1
http2irc.py Parādīt failu

@@ -586,7 +586,7 @@ class IRCClientProtocol(asyncio.Protocol):
continue
self.logger.debug('Trying to confirm message delivery')
self.pongReceivedEvent.clear()
self.send(b'PING :42')
self._direct_send(b'PING :42')
await wait_cancel_pending({asyncio.create_task(self.pongReceivedEvent.wait())}, return_when = asyncio.FIRST_COMPLETED, timeout = 5)
self.logger.debug(f'Message delivery successful: {self.pongReceivedEvent.is_set()}')
if not self.pongReceivedEvent.is_set():


Notiek ielāde…
Atcelt
Saglabāt