server: Add http2 support.

This commit is contained in:
Damir Jelić 2018-07-21 15:15:48 +02:00
parent 1ff0818d46
commit 7a12f047f7
2 changed files with 57 additions and 30 deletions

26
main.py
View file

@ -272,7 +272,7 @@ def receive_cb(server_name, file_descriptor):
server_buffer_prnt(
server, ("{prefix}matrix: disconnecting from server..."
).format(prefix=W.prefix("network")))
).format(prefix=W.prefix("network")))
server.disconnect()
@ -285,7 +285,7 @@ def receive_cb(server_name, file_descriptor):
prefix=W.prefix("network")))
server_buffer_prnt(
server, ("{prefix}matrix: disconnecting from server..."
).format(prefix=W.prefix("network")))
).format(prefix=W.prefix("network")))
server.disconnect()
break
@ -294,6 +294,12 @@ def receive_cb(server_name, file_descriptor):
response = server.client.next_response()
# Check if we need to send some data back
data_to_send = server.client.data_to_send()
if data_to_send:
server.send(data_to_send)
if response:
server.handle_response(response)
break
@ -314,7 +320,21 @@ def finalize_connection(server):
server.fd_hook = hook
server.connected = True
server.connecting = False
server.client.connect(TransportType.HTTP)
negotiated_protocol = server.socket.selected_alpn_protocol()
if negotiated_protocol is None:
negotiated_protocol = server.socket.selected_npn_protocol()
transport_type = None
if negotiated_protocol == "http/1.1":
transport_type = TransportType.HTTP
elif negotiated_protocol == "h2":
transport_type = TransportType.HTTP2
data = server.client.connect(transport_type)
server.send(data)
server.login()