mirror of
https://gitee.com/openharmony/third_party_nghttp2
synced 2024-11-23 07:50:02 +00:00
93afbc7d2f
We rewrite static header table handling in nghttp2_hd.c. We expand nghttp2_token to include all static header table entries, and fully use them in header compression and decompression. The lookup function is now located in nghttp2_hd.c. We add new nghttp2_hd_inflate_hd2() function to export token value for header name, then we pass it to nghttp2_http_on_header function, so that we don't have to look up token there. We carefully set enum value of token to static table index, so looking up static table is now O(1), assuming we have token.
27 lines
746 B
Python
Executable File
27 lines
746 B
Python
Executable File
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
# This scripts reads static table entries [1] and generates
|
|
# nghttp2_hd_static_entry table. This table is used in
|
|
# lib/nghttp2_hd.c.
|
|
#
|
|
# [1] http://http2.github.io/http2-spec/compression.html
|
|
|
|
from __future__ import unicode_literals
|
|
import re, sys
|
|
|
|
entries = []
|
|
for line in sys.stdin:
|
|
m = re.match(r'(\d+)\s+(\S+)\s+(\S.*)?', line)
|
|
val = m.group(3).strip() if m.group(3) else ''
|
|
entries.append((int(m.group(1)), m.group(2), val))
|
|
|
|
print 'static nghttp2_hd_entry static_table[] = {'
|
|
idx = 0
|
|
for i, ent in enumerate(entries):
|
|
if entries[idx][1] != ent[1]:
|
|
idx = i
|
|
print 'MAKE_STATIC_ENT("{}", "{}", {}),'\
|
|
.format(ent[1], ent[2], entries[idx][0] - 1)
|
|
print '};'
|