Home | History | Annotate | Download | only in hpack
      1 // Copyright 2014 The Go Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style
      3 // license that can be found in the LICENSE file.
      4 
      5 package hpack
      6 
      7 func pair(name, value string) HeaderField {
      8 	return HeaderField{Name: name, Value: value}
      9 }
     10 
     11 // http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-07#appendix-B
     12 var staticTable = [...]HeaderField{
     13 	pair(":authority", ""), // index 1 (1-based)
     14 	pair(":method", "GET"),
     15 	pair(":method", "POST"),
     16 	pair(":path", "/"),
     17 	pair(":path", "/index.html"),
     18 	pair(":scheme", "http"),
     19 	pair(":scheme", "https"),
     20 	pair(":status", "200"),
     21 	pair(":status", "204"),
     22 	pair(":status", "206"),
     23 	pair(":status", "304"),
     24 	pair(":status", "400"),
     25 	pair(":status", "404"),
     26 	pair(":status", "500"),
     27 	pair("accept-charset", ""),
     28 	pair("accept-encoding", "gzip, deflate"),
     29 	pair("accept-language", ""),
     30 	pair("accept-ranges", ""),
     31 	pair("accept", ""),
     32 	pair("access-control-allow-origin", ""),
     33 	pair("age", ""),
     34 	pair("allow", ""),
     35 	pair("authorization", ""),
     36 	pair("cache-control", ""),
     37 	pair("content-disposition", ""),
     38 	pair("content-encoding", ""),
     39 	pair("content-language", ""),
     40 	pair("content-length", ""),
     41 	pair("content-location", ""),
     42 	pair("content-range", ""),
     43 	pair("content-type", ""),
     44 	pair("cookie", ""),
     45 	pair("date", ""),
     46 	pair("etag", ""),
     47 	pair("expect", ""),
     48 	pair("expires", ""),
     49 	pair("from", ""),
     50 	pair("host", ""),
     51 	pair("if-match", ""),
     52 	pair("if-modified-since", ""),
     53 	pair("if-none-match", ""),
     54 	pair("if-range", ""),
     55 	pair("if-unmodified-since", ""),
     56 	pair("last-modified", ""),
     57 	pair("link", ""),
     58 	pair("location", ""),
     59 	pair("max-forwards", ""),
     60 	pair("proxy-authenticate", ""),
     61 	pair("proxy-authorization", ""),
     62 	pair("range", ""),
     63 	pair("referer", ""),
     64 	pair("refresh", ""),
     65 	pair("retry-after", ""),
     66 	pair("server", ""),
     67 	pair("set-cookie", ""),
     68 	pair("strict-transport-security", ""),
     69 	pair("transfer-encoding", ""),
     70 	pair("user-agent", ""),
     71 	pair("vary", ""),
     72 	pair("via", ""),
     73 	pair("www-authenticate", ""),
     74 }
     75 
     76 var huffmanCodes = [256]uint32{
     77 	0x1ff8,
     78 	0x7fffd8,
     79 	0xfffffe2,
     80 	0xfffffe3,
     81 	0xfffffe4,
     82 	0xfffffe5,
     83 	0xfffffe6,
     84 	0xfffffe7,
     85 	0xfffffe8,
     86 	0xffffea,
     87 	0x3ffffffc,
     88 	0xfffffe9,
     89 	0xfffffea,
     90 	0x3ffffffd,
     91 	0xfffffeb,
     92 	0xfffffec,
     93 	0xfffffed,
     94 	0xfffffee,
     95 	0xfffffef,
     96 	0xffffff0,
     97 	0xffffff1,
     98 	0xffffff2,
     99 	0x3ffffffe,
    100 	0xffffff3,
    101 	0xffffff4,
    102 	0xffffff5,
    103 	0xffffff6,
    104 	0xffffff7,
    105 	0xffffff8,
    106 	0xffffff9,
    107 	0xffffffa,
    108 	0xffffffb,
    109 	0x14,
    110 	0x3f8,
    111 	0x3f9,
    112 	0xffa,
    113 	0x1ff9,
    114 	0x15,
    115 	0xf8,
    116 	0x7fa,
    117 	0x3fa,
    118 	0x3fb,
    119 	0xf9,
    120 	0x7fb,
    121 	0xfa,
    122 	0x16,
    123 	0x17,
    124 	0x18,
    125 	0x0,
    126 	0x1,
    127 	0x2,
    128 	0x19,
    129 	0x1a,
    130 	0x1b,
    131 	0x1c,
    132 	0x1d,
    133 	0x1e,
    134 	0x1f,
    135 	0x5c,
    136 	0xfb,
    137 	0x7ffc,
    138 	0x20,
    139 	0xffb,
    140 	0x3fc,
    141 	0x1ffa,
    142 	0x21,
    143 	0x5d,
    144 	0x5e,
    145 	0x5f,
    146 	0x60,
    147 	0x61,
    148 	0x62,
    149 	0x63,
    150 	0x64,
    151 	0x65,
    152 	0x66,
    153 	0x67,
    154 	0x68,
    155 	0x69,
    156 	0x6a,
    157 	0x6b,
    158 	0x6c,
    159 	0x6d,
    160 	0x6e,
    161 	0x6f,
    162 	0x70,
    163 	0x71,
    164 	0x72,
    165 	0xfc,
    166 	0x73,
    167 	0xfd,
    168 	0x1ffb,
    169 	0x7fff0,
    170 	0x1ffc,
    171 	0x3ffc,
    172 	0x22,
    173 	0x7ffd,
    174 	0x3,
    175 	0x23,
    176 	0x4,
    177 	0x24,
    178 	0x5,
    179 	0x25,
    180 	0x26,
    181 	0x27,
    182 	0x6,
    183 	0x74,
    184 	0x75,
    185 	0x28,
    186 	0x29,
    187 	0x2a,
    188 	0x7,
    189 	0x2b,
    190 	0x76,
    191 	0x2c,
    192 	0x8,
    193 	0x9,
    194 	0x2d,
    195 	0x77,
    196 	0x78,
    197 	0x79,
    198 	0x7a,
    199 	0x7b,
    200 	0x7ffe,
    201 	0x7fc,
    202 	0x3ffd,
    203 	0x1ffd,
    204 	0xffffffc,
    205 	0xfffe6,
    206 	0x3fffd2,
    207 	0xfffe7,
    208 	0xfffe8,
    209 	0x3fffd3,
    210 	0x3fffd4,
    211 	0x3fffd5,
    212 	0x7fffd9,
    213 	0x3fffd6,
    214 	0x7fffda,
    215 	0x7fffdb,
    216 	0x7fffdc,
    217 	0x7fffdd,
    218 	0x7fffde,
    219 	0xffffeb,
    220 	0x7fffdf,
    221 	0xffffec,
    222 	0xffffed,
    223 	0x3fffd7,
    224 	0x7fffe0,
    225 	0xffffee,
    226 	0x7fffe1,
    227 	0x7fffe2,
    228 	0x7fffe3,
    229 	0x7fffe4,
    230 	0x1fffdc,
    231 	0x3fffd8,
    232 	0x7fffe5,
    233 	0x3fffd9,
    234 	0x7fffe6,
    235 	0x7fffe7,
    236 	0xffffef,
    237 	0x3fffda,
    238 	0x1fffdd,
    239 	0xfffe9,
    240 	0x3fffdb,
    241 	0x3fffdc,
    242 	0x7fffe8,
    243 	0x7fffe9,
    244 	0x1fffde,
    245 	0x7fffea,
    246 	0x3fffdd,
    247 	0x3fffde,
    248 	0xfffff0,
    249 	0x1fffdf,
    250 	0x3fffdf,
    251 	0x7fffeb,
    252 	0x7fffec,
    253 	0x1fffe0,
    254 	0x1fffe1,
    255 	0x3fffe0,
    256 	0x1fffe2,
    257 	0x7fffed,
    258 	0x3fffe1,
    259 	0x7fffee,
    260 	0x7fffef,
    261 	0xfffea,
    262 	0x3fffe2,
    263 	0x3fffe3,
    264 	0x3fffe4,
    265 	0x7ffff0,
    266 	0x3fffe5,
    267 	0x3fffe6,
    268 	0x7ffff1,
    269 	0x3ffffe0,
    270 	0x3ffffe1,
    271 	0xfffeb,
    272 	0x7fff1,
    273 	0x3fffe7,
    274 	0x7ffff2,
    275 	0x3fffe8,
    276 	0x1ffffec,
    277 	0x3ffffe2,
    278 	0x3ffffe3,
    279 	0x3ffffe4,
    280 	0x7ffffde,
    281 	0x7ffffdf,
    282 	0x3ffffe5,
    283 	0xfffff1,
    284 	0x1ffffed,
    285 	0x7fff2,
    286 	0x1fffe3,
    287 	0x3ffffe6,
    288 	0x7ffffe0,
    289 	0x7ffffe1,
    290 	0x3ffffe7,
    291 	0x7ffffe2,
    292 	0xfffff2,
    293 	0x1fffe4,
    294 	0x1fffe5,
    295 	0x3ffffe8,
    296 	0x3ffffe9,
    297 	0xffffffd,
    298 	0x7ffffe3,
    299 	0x7ffffe4,
    300 	0x7ffffe5,
    301 	0xfffec,
    302 	0xfffff3,
    303 	0xfffed,
    304 	0x1fffe6,
    305 	0x3fffe9,
    306 	0x1fffe7,
    307 	0x1fffe8,
    308 	0x7ffff3,
    309 	0x3fffea,
    310 	0x3fffeb,
    311 	0x1ffffee,
    312 	0x1ffffef,
    313 	0xfffff4,
    314 	0xfffff5,
    315 	0x3ffffea,
    316 	0x7ffff4,
    317 	0x3ffffeb,
    318 	0x7ffffe6,
    319 	0x3ffffec,
    320 	0x3ffffed,
    321 	0x7ffffe7,
    322 	0x7ffffe8,
    323 	0x7ffffe9,
    324 	0x7ffffea,
    325 	0x7ffffeb,
    326 	0xffffffe,
    327 	0x7ffffec,
    328 	0x7ffffed,
    329 	0x7ffffee,
    330 	0x7ffffef,
    331 	0x7fffff0,
    332 	0x3ffffee,
    333 }
    334 
    335 var huffmanCodeLen = [256]uint8{
    336 	13, 23, 28, 28, 28, 28, 28, 28, 28, 24, 30, 28, 28, 30, 28, 28,
    337 	28, 28, 28, 28, 28, 28, 30, 28, 28, 28, 28, 28, 28, 28, 28, 28,
    338 	6, 10, 10, 12, 13, 6, 8, 11, 10, 10, 8, 11, 8, 6, 6, 6,
    339 	5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 8, 15, 6, 12, 10,
    340 	13, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    341 	7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 8, 13, 19, 13, 14, 6,
    342 	15, 5, 6, 5, 6, 5, 6, 6, 6, 5, 7, 7, 6, 6, 6, 5,
    343 	6, 7, 6, 5, 5, 6, 7, 7, 7, 7, 7, 15, 11, 14, 13, 28,
    344 	20, 22, 20, 20, 22, 22, 22, 23, 22, 23, 23, 23, 23, 23, 24, 23,
    345 	24, 24, 22, 23, 24, 23, 23, 23, 23, 21, 22, 23, 22, 23, 23, 24,
    346 	22, 21, 20, 22, 22, 23, 23, 21, 23, 22, 22, 24, 21, 22, 23, 23,
    347 	21, 21, 22, 21, 23, 22, 23, 23, 20, 22, 22, 22, 23, 22, 22, 23,
    348 	26, 26, 20, 19, 22, 23, 22, 25, 26, 26, 26, 27, 27, 26, 24, 25,
    349 	19, 21, 26, 27, 27, 26, 27, 24, 21, 21, 26, 26, 28, 27, 27, 27,
    350 	20, 24, 20, 21, 22, 21, 21, 23, 22, 22, 25, 25, 24, 24, 26, 23,
    351 	26, 27, 26, 26, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 26,
    352 }
    353