diff options
Diffstat (limited to 'netlib')
-rw-r--r-- | netlib/debug.py | 8 | ||||
-rw-r--r-- | netlib/exceptions.py | 4 | ||||
-rw-r--r-- | netlib/http/http2/connections.py | 4 | ||||
-rw-r--r-- | netlib/tcp.py | 11 | ||||
-rw-r--r-- | netlib/websockets/protocol.py | 4 |
5 files changed, 24 insertions, 7 deletions
diff --git a/netlib/debug.py b/netlib/debug.py index 303a2f6f..a395afcb 100644 --- a/netlib/debug.py +++ b/netlib/debug.py @@ -1,5 +1,6 @@ from __future__ import (absolute_import, print_function, division) +import os import sys import threading import signal @@ -93,6 +94,7 @@ def dump_stacks(signal, frame, file=sys.stdout): print("\n".join(code), file=file) -def register_info_dumpers(): # pragma: no cover - signal.signal(signal.SIGUSR1, dump_info) - signal.signal(signal.SIGUSR2, dump_stacks) +def register_info_dumpers(): + if os.name != "nt": + signal.signal(signal.SIGUSR1, dump_info) + signal.signal(signal.SIGUSR2, dump_stacks) 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/http/http2/connections.py b/netlib/http/http2/connections.py index 8667d370..8f246feb 100644 --- a/netlib/http/http2/connections.py +++ b/netlib/http/http2/connections.py @@ -5,7 +5,7 @@ import time import hyperframe.frame from hpack.hpack import Encoder, Decoder -from netlib import utils +from netlib import utils, strutils from netlib.http import url import netlib.http.headers import netlib.http.response @@ -230,7 +230,7 @@ class HTTP2Protocol(object): headers = response.headers.copy() if ':status' not in headers: - headers.insert(0, b':status', str(response.status_code).encode('ascii')) + headers.insert(0, b':status', strutils.always_bytes(response.status_code)) if hasattr(response, 'stream_id'): stream_id = response.stream_id 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 diff --git a/netlib/websockets/protocol.py b/netlib/websockets/protocol.py index c1b7be2c..af0eef7d 100644 --- a/netlib/websockets/protocol.py +++ b/netlib/websockets/protocol.py @@ -20,7 +20,7 @@ import os import six -from netlib import http +from netlib import http, strutils websockets_magic = b'258EAFA5-E914-47DA-95CA-C5AB0DC85B11' VERSION = "13" @@ -109,4 +109,4 @@ class WebsocketsProtocol(object): @classmethod def create_server_nonce(self, client_nonce): - return base64.b64encode(hashlib.sha1(client_nonce + websockets_magic).digest()) + return base64.b64encode(hashlib.sha1(strutils.always_bytes(client_nonce) + websockets_magic).digest()) |