private static readonly HeaderField[] s_staticDecoderTable = new HeaderField[]
{
- CreateHeaderField(":authority", ""),
- CreateHeaderField(":method", "GET"),
- CreateHeaderField(":method", "POST"),
- CreateHeaderField(":path", "/"),
- CreateHeaderField(":path", "/index.html"),
- CreateHeaderField(":scheme", "http"),
- CreateHeaderField(":scheme", "https"),
- CreateHeaderField(":status", "200"),
- CreateHeaderField(":status", "204"),
- CreateHeaderField(":status", "206"),
- CreateHeaderField(":status", "304"),
- CreateHeaderField(":status", "400"),
- CreateHeaderField(":status", "404"),
- CreateHeaderField(":status", "500"),
- CreateHeaderField("accept-charset", ""),
- CreateHeaderField("accept-encoding", "gzip, deflate"),
- CreateHeaderField("accept-language", ""),
- CreateHeaderField("accept-ranges", ""),
- CreateHeaderField("accept", ""),
- CreateHeaderField("access-control-allow-origin", ""),
- CreateHeaderField("age", ""),
- CreateHeaderField("allow", ""),
- CreateHeaderField("authorization", ""),
- CreateHeaderField("cache-control", ""),
- CreateHeaderField("content-disposition", ""),
- CreateHeaderField("content-encoding", ""),
- CreateHeaderField("content-language", ""),
- CreateHeaderField("content-length", ""),
- CreateHeaderField("content-location", ""),
- CreateHeaderField("content-range", ""),
- CreateHeaderField("content-type", ""),
- CreateHeaderField("cookie", ""),
- CreateHeaderField("date", ""),
- CreateHeaderField("etag", ""),
- CreateHeaderField("expect", ""),
- CreateHeaderField("expires", ""),
- CreateHeaderField("from", ""),
- CreateHeaderField("host", ""),
- CreateHeaderField("if-match", ""),
- CreateHeaderField("if-modified-since", ""),
- CreateHeaderField("if-none-match", ""),
- CreateHeaderField("if-range", ""),
- CreateHeaderField("if-unmodified-since", ""),
- CreateHeaderField("last-modified", ""),
- CreateHeaderField("link", ""),
- CreateHeaderField("location", ""),
- CreateHeaderField("max-forwards", ""),
- CreateHeaderField("proxy-authenticate", ""),
- CreateHeaderField("proxy-authorization", ""),
- CreateHeaderField("range", ""),
- CreateHeaderField("referer", ""),
- CreateHeaderField("refresh", ""),
- CreateHeaderField("retry-after", ""),
- CreateHeaderField("server", ""),
- CreateHeaderField("set-cookie", ""),
- CreateHeaderField("strict-transport-security", ""),
- CreateHeaderField("transfer-encoding", ""),
- CreateHeaderField("user-agent", ""),
- CreateHeaderField("vary", ""),
- CreateHeaderField("via", ""),
- CreateHeaderField("www-authenticate", "")
+ CreateHeaderField(1, ":authority", ""),
+ CreateHeaderField(2, ":method", "GET"),
+ CreateHeaderField(3, ":method", "POST"),
+ CreateHeaderField(4, ":path", "/"),
+ CreateHeaderField(5, ":path", "/index.html"),
+ CreateHeaderField(6, ":scheme", "http"),
+ CreateHeaderField(7, ":scheme", "https"),
+ CreateHeaderField(8, ":status", "200"),
+ CreateHeaderField(9, ":status", "204"),
+ CreateHeaderField(10, ":status", "206"),
+ CreateHeaderField(11, ":status", "304"),
+ CreateHeaderField(12, ":status", "400"),
+ CreateHeaderField(13, ":status", "404"),
+ CreateHeaderField(14, ":status", "500"),
+ CreateHeaderField(15, "accept-charset", ""),
+ CreateHeaderField(16, "accept-encoding", "gzip, deflate"),
+ CreateHeaderField(17, "accept-language", ""),
+ CreateHeaderField(18, "accept-ranges", ""),
+ CreateHeaderField(19, "accept", ""),
+ CreateHeaderField(20, "access-control-allow-origin", ""),
+ CreateHeaderField(21, "age", ""),
+ CreateHeaderField(22, "allow", ""),
+ CreateHeaderField(23, "authorization", ""),
+ CreateHeaderField(24, "cache-control", ""),
+ CreateHeaderField(25, "content-disposition", ""),
+ CreateHeaderField(26, "content-encoding", ""),
+ CreateHeaderField(27, "content-language", ""),
+ CreateHeaderField(28, "content-length", ""),
+ CreateHeaderField(29, "content-location", ""),
+ CreateHeaderField(30, "content-range", ""),
+ CreateHeaderField(31, "content-type", ""),
+ CreateHeaderField(32, "cookie", ""),
+ CreateHeaderField(33, "date", ""),
+ CreateHeaderField(34, "etag", ""),
+ CreateHeaderField(35, "expect", ""),
+ CreateHeaderField(36, "expires", ""),
+ CreateHeaderField(37, "from", ""),
+ CreateHeaderField(38, "host", ""),
+ CreateHeaderField(39, "if-match", ""),
+ CreateHeaderField(40, "if-modified-since", ""),
+ CreateHeaderField(41, "if-none-match", ""),
+ CreateHeaderField(42, "if-range", ""),
+ CreateHeaderField(43, "if-unmodified-since", ""),
+ CreateHeaderField(44, "last-modified", ""),
+ CreateHeaderField(45, "link", ""),
+ CreateHeaderField(46, "location", ""),
+ CreateHeaderField(47, "max-forwards", ""),
+ CreateHeaderField(48, "proxy-authenticate", ""),
+ CreateHeaderField(49, "proxy-authorization", ""),
+ CreateHeaderField(50, "range", ""),
+ CreateHeaderField(51, "referer", ""),
+ CreateHeaderField(52, "refresh", ""),
+ CreateHeaderField(53, "retry-after", ""),
+ CreateHeaderField(54, "server", ""),
+ CreateHeaderField(55, "set-cookie", ""),
+ CreateHeaderField(56, "strict-transport-security", ""),
+ CreateHeaderField(57, "transfer-encoding", ""),
+ CreateHeaderField(58, "user-agent", ""),
+ CreateHeaderField(59, "vary", ""),
+ CreateHeaderField(60, "via", ""),
+ CreateHeaderField(61, "www-authenticate", "")
};
// TODO: The HeaderField constructor will allocate and copy again. We should avoid this.
// Tackle as part of header table allocation strategy in general (see note in HeaderField constructor).
- private static HeaderField CreateHeaderField(string name, string value) =>
+ private static HeaderField CreateHeaderField(int staticTableIndex, string name, string value) =>
new HeaderField(
+ staticTableIndex,
Encoding.ASCII.GetBytes(name),
value.Length != 0 ? Encoding.ASCII.GetBytes(value) : Array.Empty<byte>());
}