aboutsummaryrefslogtreecommitdiffstats
path: root/netlib
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2016-06-12 12:15:00 +1200
committerAldo Cortesi <aldo@nullcube.com>2016-06-14 14:32:18 +1200
commite6fd98bb72e5dee899678c0a382c832580f75e82 (patch)
tree04e5008ce1b27cd8165678b4eed4542d7620d7f7 /netlib
parentccf4723505935f759c1bff5c5cc7d6d986726422 (diff)
downloadmitmproxy-e6fd98bb72e5dee899678c0a382c832580f75e82.tar.gz
mitmproxy-e6fd98bb72e5dee899678c0a382c832580f75e82.tar.bz2
mitmproxy-e6fd98bb72e5dee899678c0a382c832580f75e82.zip
Start rolling out leak detection in netlib
Diffstat (limited to 'netlib')
-rw-r--r--netlib/exceptions.py4
-rw-r--r--netlib/tcp.py11
2 files changed, 15 insertions, 0 deletions
diff --git a/netlib/exceptions.py b/netlib/exceptions.py
index 05f1054b..dec79c22 100644
--- a/netlib/exceptions.py
+++ b/netlib/exceptions.py
@@ -54,3 +54,7 @@ class TlsException(NetlibException):
class InvalidCertificateException(TlsException):
pass
+
+
+class Timeout(TcpException):
+ pass
diff --git a/netlib/tcp.py b/netlib/tcp.py
index a8a68139..69dafc1f 100644
--- a/netlib/tcp.py
+++ b/netlib/tcp.py
@@ -967,3 +967,14 @@ class TCPServer(object):
"""
Called after server shutdown.
"""
+
+ def wait_for_silence(self, timeout=5):
+ start = time.time()
+ while 1:
+ if time.time() - start >= timeout:
+ raise exceptions.Timeout(
+ "%s service threads still alive" %
+ self.handler_counter.count
+ )
+ if self.handler_counter.count == 0:
+ return