3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-11-01 01:09:22 +01:00

Don't clear the read buffer with every _run_irc call

This commit is contained in:
James Lu 2018-03-17 12:18:16 -07:00
parent 10d2fb93ed
commit 0151f77f7b

View File

@ -1304,6 +1304,7 @@ class IRCNetwork(PyLinkNetworkCoreWithUtils):
self._ping_timer = None
self._socket = None
self._selector_key = None
self._buffer = b''
def _init_vars(self, *args, **kwargs):
super()._init_vars(*args, **kwargs)
@ -1504,6 +1505,7 @@ class IRCNetwork(PyLinkNetworkCoreWithUtils):
if self._ping_timer:
log.debug('(%s) Canceling pingTimer at %s due to disconnect() call', self.name, time.time())
self._ping_timer.cancel()
self._buffer = b''
self._post_disconnect()
if self._run_autoconnect():
@ -1536,7 +1538,6 @@ class IRCNetwork(PyLinkNetworkCoreWithUtils):
"""
Message handler, called when select() has data to read.
"""
buf = b''
data = b''
try:
data = self._socket.recv(2048)
@ -1551,7 +1552,7 @@ class IRCNetwork(PyLinkNetworkCoreWithUtils):
return
raise
buf += data
self._buffer += data
if not data:
self._log_connection_error('(%s) Connection lost, disconnecting.', self.name)
self.disconnect()
@ -1561,8 +1562,8 @@ class IRCNetwork(PyLinkNetworkCoreWithUtils):
self.disconnect()
return
while b'\n' in buf:
line, buf = buf.split(b'\n', 1)
while b'\n' in self._buffer:
line, self._buffer = self._buffer.split(b'\n', 1)
line = line.strip(b'\r')
line = line.decode(self.encoding, "replace")
self.parse_irc_command(line)