@@ -931,6 +931,45 @@ def test_resizing_header_table(self):
931
931
d .header_table_size = 40
932
932
assert len (d .header_table ) == 0
933
933
934
+ def test_apache_trafficserver (self ):
935
+ # This test reproduces the bug in #110, using exactly the same header
936
+ # data.
937
+ d = Decoder ()
938
+ data = (
939
+ b'\x10 \x07 :status\x03 200@\x06 server\t ATS/6.0.0'
940
+ b'@\x04 date\x1d Tue, 31 Mar 2015 08:09:51 GMT'
941
+ b'@\x0c content-type\t text/html@\x0e content-length\x05 42468'
942
+ b'@\r last-modified\x1d Tue, 31 Mar 2015 01:55:51 GMT'
943
+ b'@\x04 vary\x0f Accept-Encoding@\x04 etag\x0f "5519fea7-a5e4"'
944
+ b'@\x08 x-served\x05 Nginx@\x14 x-subdomain-tryfiles\x04 True'
945
+ b'@\x07 x-deity\t hydra-lts@\r accept-ranges\x05 bytes@\x03 age\x01 0'
946
+ b'@\x19 strict-transport-security\r max-age=86400'
947
+ b'@\x03 via2https/1.1 ATS (ApacheTrafficServer/6.0.0 [cSsNfU])'
948
+ )
949
+ expect = [
950
+ (':status' , '200' ),
951
+ ('server' , 'ATS/6.0.0' ),
952
+ ('date' , 'Tue, 31 Mar 2015 08:09:51 GMT' ),
953
+ ('content-type' , 'text/html' ),
954
+ ('content-length' , '42468' ),
955
+ ('last-modified' , 'Tue, 31 Mar 2015 01:55:51 GMT' ),
956
+ ('vary' , 'Accept-Encoding' ),
957
+ ('etag' , '"5519fea7-a5e4"' ),
958
+ ('x-served' , 'Nginx' ),
959
+ ('x-subdomain-tryfiles' , 'True' ),
960
+ ('x-deity' , 'hydra-lts' ),
961
+ ('accept-ranges' , 'bytes' ),
962
+ ('age' , '0' ),
963
+ ('strict-transport-security' , 'max-age=86400' ),
964
+ ('via' , 'https/1.1 ATS (ApacheTrafficServer/6.0.0 [cSsNfU])' ),
965
+ ]
966
+
967
+ result = d .decode (data )
968
+
969
+ assert result == expect
970
+ # The status header shouldn't be indexed.
971
+ assert len (d .header_table ) == len (expect ) - 1
972
+
934
973
935
974
class TestIntegerEncoding (object ):
936
975
# These tests are stolen from the HPACK spec.
0 commit comments