Updated some logs, fixed a major bug with reconnecting in irc.reset.

This commit is contained in:
Jeremy Fincher 2004-07-28 00:32:09 +00:00
parent 8f72aeca1a
commit d2ff10b25d
2 changed files with 20 additions and 12 deletions

View File

@ -152,7 +152,8 @@ class IrcMsgQueue(object):
def enqueue(self, msg): def enqueue(self, msg):
"""Enqueues a given message.""" """Enqueues a given message."""
if msg in self.msgs: if msg in self.msgs:
log.warning('Not adding message %r to queue, already added.' % msg) s = str(msg).strip()
log.warning('Not adding message %r to queue, already added.', s)
else: else:
self.msgs.add(msg) self.msgs.add(msg)
if msg.command in _high: if msg.command in _high:
@ -460,12 +461,12 @@ class Irc(IrcCommandDispatcher):
def reset(self): def reset(self):
"""Resets the Irc object. Called when the driver reconnects.""" """Resets the Irc object. Called when the driver reconnects."""
self._setNonResettingVariables() self._setNonResettingVariables()
self._queueConnectMessages()
self.state.reset() self.state.reset()
self.queue.reset() self.queue.reset()
self.fastqueue.reset() self.fastqueue.reset()
for callback in self.callbacks: for callback in self.callbacks:
callback.reset() callback.reset()
self._queueConnectMessages()
def _setNonResettingVariables(self): def _setNonResettingVariables(self):
# Configuration stuff. # Configuration stuff.
@ -486,9 +487,9 @@ class Irc(IrcCommandDispatcher):
if self.password: if self.password:
log.info('Sending PASS command, not logging the password.') log.info('Sending PASS command, not logging the password.')
self.queueMsg(ircmsgs.password(self.password)) self.queueMsg(ircmsgs.password(self.password))
log.info('Sending NICK command, nick is %s.', self.nick) log.info('Queueing NICK command, nick is %s.', self.nick)
self.queueMsg(ircmsgs.nick(self.nick)) self.queueMsg(ircmsgs.nick(self.nick))
log.info('Sending USER command, ident is %s, user is %s.', log.info('Queueing USER command, ident is %s, user is %s.',
self.ident, self.user) self.ident, self.user)
self.queueMsg(ircmsgs.user(self.ident, self.user)) self.queueMsg(ircmsgs.user(self.ident, self.user))

View File

@ -92,7 +92,8 @@ class SocketDriver(drivers.IrcDriver):
# (11, 'Resource temporarily unavailable') raised if connect # (11, 'Resource temporarily unavailable') raised if connect
# hasn't finished yet. # hasn't finished yet.
if e.args[0] != 11 and self.eagains > 120: if e.args[0] != 11 and self.eagains > 120:
log.warning('Disconnect from %s: %s', self.server, e) server = '%s:%s' % self.server
log.warning('Disconnect from %s: %s', server, e.args[1])
self.reconnect(wait=True) self.reconnect(wait=True)
else: else:
log.debug('Got EAGAIN, current count: %s', self.eagains) log.debug('Got EAGAIN, current count: %s', self.eagains)
@ -128,26 +129,31 @@ class SocketDriver(drivers.IrcDriver):
return return
self._sendIfMsgs() self._sendIfMsgs()
def connect(self, wait=False): def connect(self, **kwargs):
self.reconnect(wait, reset=False) self.reconnect(reset=False, **kwargs)
def reconnect(self, wait=False, reset=True): def reconnect(self, wait=False, reset=True):
server = '%s:%s' % self.server
self.irc.reset()
if self.connected: if self.connected:
log.info('Reconnect called on driver for %s.' % self.irc) log.info('Reconnect called on driver for %s.', self.irc)
self.conn.close() self.conn.close()
elif not wait: elif not wait:
log.info('Connecting to %s.' % ':'.join(map(str, self.server))) log.info('Connecting to %s.', server)
self.connected = False self.connected = False
if wait: if wait:
log.info('Reconnect waiting.') log.info('Reconnect to %s waiting.', server)
self._scheduleReconnect() self._scheduleReconnect()
return return
if reset: if reset:
log.debug('Resetting %s.', self.irc)
self.irc.reset() self.irc.reset()
else:
log.debug('Not resetting %s.', self.irc)
try: try:
self.conn = utils.getSocket(self.server[0]) self.conn = utils.getSocket(self.server[0])
except socket.error, e: except socket.error, e:
log.warning('Error connecting to %s: %s', self.server[0], e) log.warning('Error connecting to %s: %s', server, e.args[1])
self.reconnect(wait=True) self.reconnect(wait=True)
return return
# We allow more time for the connect here, since it might take longer. # We allow more time for the connect here, since it might take longer.
@ -188,7 +194,8 @@ class SocketDriver(drivers.IrcDriver):
when = time.time() + self.reconnectWaits[self.reconnectWaitsIndex] when = time.time() + self.reconnectWaits[self.reconnectWaitsIndex]
if not world.dying: if not world.dying:
whenS = log.timestamp(when) whenS = log.timestamp(when)
log.info('Scheduling reconnect to %s at %s', self.server, whenS) server = '%s:%s' % self.server
log.info('Scheduling reconnect to %s at %s', server, whenS)
schedule.addEvent(self.reconnect, when) schedule.addEvent(self.reconnect, when)
def die(self): def die(self):