aboutsummaryrefslogtreecommitdiffstats
path: root/netlib
diff options
context:
space:
mode:
Diffstat (limited to 'netlib')
-rw-r--r--netlib/http2/__init__.py25
-rw-r--r--netlib/test.py2
2 files changed, 14 insertions, 13 deletions
diff --git a/netlib/http2/__init__.py b/netlib/http2/__init__.py
index d6f2c51c..2803cccb 100644
--- a/netlib/http2/__init__.py
+++ b/netlib/http2/__init__.py
@@ -30,7 +30,7 @@ class HTTP2Protocol(object):
# "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"
CLIENT_CONNECTION_PREFACE = '505249202a20485454502f322e300d0a0d0a534d0d0a0d0a'
- ALPN_PROTO_H2 = b'h2'
+ ALPN_PROTO_H2 = 'h2'
HTTP2_DEFAULT_SETTINGS = {
SettingsFrame.SETTINGS.SETTINGS_HEADER_TABLE_SIZE: 4096,
@@ -53,18 +53,25 @@ class HTTP2Protocol(object):
alp = self.tcp_client.get_alpn_proto_negotiated()
if alp != self.ALPN_PROTO_H2:
raise NotImplementedError(
- "H2Client can not handle unknown ALP: %s" % alp)
+ "HTTP2Protocol can not handle unknown ALP: %s" % alp)
log.debug("ALP 'h2' successfully negotiated.")
+ return True
- def send_connection_preface(self):
+ def perform_connection_preface(self):
self.tcp_client.wfile.write(
bytes(self.CLIENT_CONNECTION_PREFACE.decode('hex')))
self.send_frame(SettingsFrame(state=self))
+ # read server settings frame
frame = Frame.from_file(self.tcp_client.rfile, self)
assert isinstance(frame, SettingsFrame)
self._apply_settings(frame.settings)
- self.read_frame() # read setting ACK frame
+
+ # read setting ACK frame
+ settings_ack_frame = self.read_frame()
+ assert isinstance(settings_ack_frame, SettingsFrame)
+ assert settings_ack_frame.flags & Frame.FLAG_ACK
+ assert len(settings_ack_frame.settings) == 0
log.debug("Connection Preface completed.")
@@ -94,9 +101,9 @@ class HTTP2Protocol(object):
old_value = '-'
self.http2_settings[setting] = value
- log.debug("Setting changed: %s to %d (was %s)" % (
+ log.debug("Setting changed: %s to %s (was %s)" % (
SettingsFrame.SETTINGS.get_name(setting),
- value,
+ str(value),
str(old_value)))
self.send_frame(SettingsFrame(state=self, flags=Frame.FLAG_ACK))
@@ -157,9 +164,6 @@ class HTTP2Protocol(object):
header_block_fragment += frame.header_block_fragment
if frame.flags | Frame.FLAG_END_HEADERS:
break
- else:
- log.debug("Unexpected frame received:")
- log.debug(frame.human_readable())
while True:
frame = self.read_frame()
@@ -167,9 +171,6 @@ class HTTP2Protocol(object):
body += frame.payload
if frame.flags | Frame.FLAG_END_STREAM:
break
- else:
- log.debug("Unexpected frame received:")
- log.debug(frame.human_readable())
headers = {}
for header, value in self.decoder.decode(header_block_fragment):
diff --git a/netlib/test.py b/netlib/test.py
index ee8c6685..4b0b6bd2 100644
--- a/netlib/test.py
+++ b/netlib/test.py
@@ -4,7 +4,7 @@ import Queue
import cStringIO
import OpenSSL
from . import tcp, certutils
-import tutils
+from test import tutils
class ServerThread(threading.Thread):