summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2013-01-21 08:32:21 -0800
committerGuido van Rossum <guido@python.org>2013-01-21 08:32:21 -0800
commitfb25d9012471e095db73bb5d19c39dc17a42669d (patch)
treef363b7135ad7066e2fc1a060ae484c3e27569921
parent7a445d2aa32a7b28c2e5fe7ff7a65b93b5355f91 (diff)
downloadtrollius-git-fb25d9012471e095db73bb5d19c39dc17a42669d.tar.gz
Cancel handlers in remove_reader() etc.
-rw-r--r--tulip/unix_events.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/tulip/unix_events.py b/tulip/unix_events.py
index d23c016..bf58d22 100644
--- a/tulip/unix_events.py
+++ b/tulip/unix_events.py
@@ -412,6 +412,8 @@ class UnixEventLoop(events.EventLoop):
self._selector.unregister(fd)
else:
self._selector.modify(fd, mask, (None, writer, connector))
+ if reader is not None:
+ reader.cancel()
return True
def add_writer(self, fd, callback, *args):
@@ -442,6 +444,10 @@ class UnixEventLoop(events.EventLoop):
self._selector.unregister(fd)
else:
self._selector.modify(fd, mask, (reader, None, None))
+ if writer is not None:
+ writer.cancel()
+ if connector is not None:
+ connector.cancel()
return True
# NOTE: add_connector() and add_writer() are mutually exclusive.
@@ -481,6 +487,10 @@ class UnixEventLoop(events.EventLoop):
self._selector.unregister(fd)
else:
self._selector.modify(fd, mask, (reader, None, None))
+ if writer is not None:
+ writer.cancel()
+ if connector is not None:
+ connector.cancel()
return True
def sock_recv(self, sock, n):