Index: asyncore.py =================================================================== --- asyncore.py (revision 72442) +++ asyncore.py (working copy) @@ -99,12 +99,12 @@ try: if flags & select.POLLIN: obj.handle_read_event() - if flags & select.POLLOUT: + if flags & select.POLLOUT and obj.connected: obj.handle_write_event() + if flags & select.POLLPRI and obj.connected: + obj.handle_expt_event() if flags & (select.POLLHUP | select.POLLERR | select.POLLNVAL): obj.handle_close() - if flags & select.POLLPRI: - obj.handle_expt_event() except _reraised_exceptions: raise except: Index: test/test_asyncore.py =================================================================== --- test/test_asyncore.py (revision 72442) +++ test/test_asyncore.py (working copy) @@ -31,6 +31,7 @@ self.socket.close() class exitingdummy: + connected = True def __init__(self): pass @@ -42,6 +43,7 @@ handle_expt_event = handle_read_event class crashingdummy: + connected = True def __init__(self): self.error_handled = False @@ -127,6 +129,7 @@ ) class testobj: + connected = True def __init__(self): self.read = False self.write = False