diff --git a/src/common/xmpp/idlequeue.py b/src/common/xmpp/idlequeue.py index 1b0bccb04..d2107af18 100644 --- a/src/common/xmpp/idlequeue.py +++ b/src/common/xmpp/idlequeue.py @@ -388,20 +388,22 @@ class IdleQueue: self.unplug_idle(fd) return False + if flags & IS_CLOSED: + # io error, don't expect more events + self.remove_timeout(obj.fd) + self.unplug_idle(obj.fd) + obj.pollend() + return False + if flags & PENDING_READ: #print 'waiting read on %d, flags are %d' % (fd, flags) obj.pollin() return True - elif flags & PENDING_WRITE: + if flags & PENDING_WRITE: obj.pollout() return True - elif flags & IS_CLOSED: - # io error, don't expect more events - self.remove_timeout(obj.fd) - self.unplug_idle(obj.fd) - obj.pollend() return False def process(self):