Guido van Rossum added the comment:

Figured it out. KqueueSelector was missing the unregister() implementation.  
Here it is:

        def unregister(self, fileobj):
            key = super().unregister(fileobj)
            mask = 0
            if key.events & SELECT_IN:
                mask |= KQ_FILTER_READ
            if key.events & SELECT_OUT:
                mask |= KQ_FILTER_WRITE
            kev = kevent(key.fd, mask, KQ_EV_DELETE)
            self._kqueue.control([kev], 0, 0)

I also added a __repr__ to the _Key class:

    def __repr__(self):
        return '{}<fileobje={}, fd={}, events={:#x}, data={}>'.format(
            self.__class__.__name__,
            self.fileobj, self.fd, self.events, self.data)

Attached a new patch for tulip (but no new patch for select.py).  I think I may 
have left the debug logging in.  I will submit this to the Tulip repo, but we 
still need the changes for SELECT_CONNECT (I can't really test that, still no 
Windows access).

----------
Added file: http://bugs.python.org/file28636/tulip-selectors-3.diff

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue16853>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to