From cdf48490ac26384e3a7d8c6349c77afbcf7f561d Mon Sep 17 00:00:00 2001 From: Trygve Aaberge Date: Thu, 21 Feb 2019 22:48:55 +0100 Subject: [PATCH] Fallback to HTTP1 when HTTP2 is not negotiated If the server doesn't support ALPN or NPN, negotiated_protocol will be None. That meant that transport_type wouldn't be set, in which case nio will raise a NotImplementedError. Instead, set transport_type to HTTP if nothing is negotiated. --- main.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/main.py b/main.py index b8c405f..1a4159e 100644 --- a/main.py +++ b/main.py @@ -335,15 +335,13 @@ def finalize_connection(server): server.connecting = False server.reconnect_delay = 0 - negotiated_protocol = server.socket.selected_alpn_protocol() + negotiated_protocol = (server.socket.selected_alpn_protocol() or + server.socket.selected_npn_protocol()) - if negotiated_protocol is None: - negotiated_protocol = server.socket.selected_npn_protocol() - - if negotiated_protocol == "http/1.1": - server.transport_type = TransportType.HTTP - elif negotiated_protocol == "h2": + if negotiated_protocol == "h2": server.transport_type = TransportType.HTTP2 + else: + server.transport_type = TransportType.HTTP data = server.client.connect(server.transport_type) server.send(data)