From 79d39ac119413f9c07783f288708a51910b1d122 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Sat, 11 Feb 2006 21:27:44 +0000 Subject: [PATCH] remove fd from selector and timeouts when pollend event is raised --- src/common/xmpp/idlequeue.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/common/xmpp/idlequeue.py b/src/common/xmpp/idlequeue.py index 40043425a..bd42a8889 100644 --- a/src/common/xmpp/idlequeue.py +++ b/src/common/xmpp/idlequeue.py @@ -90,6 +90,8 @@ class IdleQueue: del(self.alarms[alarm_time]) def plug_idle(self, obj, writable = True, readable = True): + if obj.fd == -1: + return if self.queue.has_key(obj.fd): self.unplug_idle(obj.fd) self.queue[obj.fd] = obj @@ -133,6 +135,9 @@ class IdleQueue: return True elif flags & 16: # closed channel + # io error, don't expect more events + self.remove_timeout(obj.fd) + self.unplug_idle(obj.fd) obj.pollend() return False