reuse frame reading snippet

This commit is contained in:
Thomas Kriechbaumer 2016-01-24 23:16:50 +01:00
parent 4de9cbb61e
commit a99ef584ad
2 changed files with 7 additions and 5 deletions

View File

@ -206,12 +206,8 @@ class Http2Layer(Layer):
other_conn = self.server_conn if conn == self.client_conn.connection else self.client_conn
is_server = (conn == self.server_conn.connection)
field = source_conn.rfile.peek(3)
length = int(field.encode('hex'), 16)
raw_frame = source_conn.rfile.safe_read(9 + length)
with source_conn.h2.lock:
events = source_conn.h2.receive_data(raw_frame)
events = source_conn.h2.receive_data(utils.http2_read_frame(source_conn.rfile))
source_conn.send(source_conn.h2.data_to_send())
for event in events:

View File

@ -173,3 +173,9 @@ def safe_subn(pattern, repl, target, *args, **kwargs):
need a better solution that is aware of the actual content ecoding.
"""
return re.subn(str(pattern), str(repl), target, *args, **kwargs)
def http2_read_frame(rfile):
field = rfile.peek(3)
length = int(field.encode('hex'), 16)
raw_frame = rfile.safe_read(9 + length)
return raw_frame