mirror of
https://github.com/jlu5/PyLink.git
synced 2024-11-27 21:19:31 +01:00
Irc: unconditionally call disconnect() on errors or ping timeouts
This prevents duplicated ping timer threads from spawning, I think...
This commit is contained in:
parent
b1a5f864d8
commit
f555a484f9
19
classes.py
19
classes.py
@ -277,9 +277,6 @@ class Irc():
|
|||||||
log.error('(%s) Disconnected from IRC: %s: %s',
|
log.error('(%s) Disconnected from IRC: %s: %s',
|
||||||
self.name, type(e).__name__, str(e))
|
self.name, type(e).__name__, str(e))
|
||||||
|
|
||||||
if not self.aborted.is_set():
|
|
||||||
# Only start a disconnection process if one doesn't already
|
|
||||||
# exist.
|
|
||||||
self.disconnect()
|
self.disconnect()
|
||||||
|
|
||||||
# Internal hook signifying that a network has disconnected.
|
# Internal hook signifying that a network has disconnected.
|
||||||
@ -299,21 +296,15 @@ class Irc():
|
|||||||
def disconnect(self):
|
def disconnect(self):
|
||||||
"""Handle disconnects from the remote server."""
|
"""Handle disconnects from the remote server."""
|
||||||
|
|
||||||
log.debug('(%s) _disconnect: Clearing self.connected state.', self.name)
|
log.debug('(%s) disconnect: Clearing self.connected state.', self.name)
|
||||||
self.connected.clear()
|
self.connected.clear()
|
||||||
|
|
||||||
log.debug('(%s) _disconnect: Setting self.aborted to True.', self.name)
|
|
||||||
self.aborted.set()
|
|
||||||
|
|
||||||
log.debug('(%s) disconnect: Clearing state via initVars().', self.name)
|
|
||||||
self.initVars()
|
|
||||||
|
|
||||||
log.debug('(%s) Removing channel logging handlers due to disconnect.', self.name)
|
log.debug('(%s) Removing channel logging handlers due to disconnect.', self.name)
|
||||||
while self.loghandlers:
|
while self.loghandlers:
|
||||||
log.removeHandler(self.loghandlers.pop())
|
log.removeHandler(self.loghandlers.pop())
|
||||||
|
|
||||||
try:
|
try:
|
||||||
log.debug('(%s) _disconnect: Shutting down socket.', self.name)
|
log.debug('(%s) disconnect: Shutting down socket.', self.name)
|
||||||
self.socket.shutdown(socket.SHUT_RDWR)
|
self.socket.shutdown(socket.SHUT_RDWR)
|
||||||
except: # Socket timed out during creation; ignore
|
except: # Socket timed out during creation; ignore
|
||||||
pass
|
pass
|
||||||
@ -324,6 +315,12 @@ class Irc():
|
|||||||
log.debug('(%s) Canceling pingTimer at %s due to disconnect() call', self.name, time.time())
|
log.debug('(%s) Canceling pingTimer at %s due to disconnect() call', self.name, time.time())
|
||||||
self.pingTimer.cancel()
|
self.pingTimer.cancel()
|
||||||
|
|
||||||
|
log.debug('(%s) disconnect: Setting self.aborted to True.', self.name)
|
||||||
|
self.aborted.set()
|
||||||
|
|
||||||
|
log.debug('(%s) disconnect: Clearing state via initVars().', self.name)
|
||||||
|
self.initVars()
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
"""Main IRC loop which listens for messages."""
|
"""Main IRC loop which listens for messages."""
|
||||||
# Some magic below cause this to work, though anything that's
|
# Some magic below cause this to work, though anything that's
|
||||||
|
Loading…
Reference in New Issue
Block a user