summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Kluyver <takowl@gmail.com>2015-10-13 12:41:09 +0100
committerThomas Kluyver <takowl@gmail.com>2015-10-13 12:41:09 +0100
commit5e6e0ad21acfed32c57ae8ef23a8a0722869afe1 (patch)
tree865fa61bf1c2e6da0a476d456329d1f5b7610217
parent8a86932b770cd42ab1664b35a327b5f776b8c1df (diff)
downloadpexpect-git-5e6e0ad21acfed32c57ae8ef23a8a0722869afe1.tar.gz
Stop asyncio listening to pty once we've found what we need
Closes gh-213 (fingers crossed)
-rw-r--r--pexpect/async.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/pexpect/async.py b/pexpect/async.py
index a798457..136fc0e 100644
--- a/pexpect/async.py
+++ b/pexpect/async.py
@@ -23,6 +23,7 @@ def expect_async(expecter, timeout=None):
return expecter.timeout(e)
class PatternWaiter(asyncio.Protocol):
+ transport = None
def __init__(self, expecter):
self.expecter = expecter
self.fut = asyncio.Future()
@@ -30,10 +31,15 @@ class PatternWaiter(asyncio.Protocol):
def found(self, result):
if not self.fut.done():
self.fut.set_result(result)
+ self.transport.pause_reading()
def error(self, exc):
if not self.fut.done():
self.fut.set_exception(exc)
+ self.transport.pause_reading()
+
+ def connection_made(self, transport):
+ self.transport = transport
def data_received(self, data):
spawn = self.expecter.spawn