Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(265)

Side by Side Diff: net/spdy/spdy_protocol.h

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // This file contains some protocol structures for use with SPDY 2 and 3 5 // This file contains some protocol structures for use with SPDY 2 and 3
6 // The SPDY 2 spec can be found at: 6 // The SPDY 2 spec can be found at:
7 // http://dev.chromium.org/spdy/spdy-protocol/spdy-protocol-draft2 7 // http://dev.chromium.org/spdy/spdy-protocol/spdy-protocol-draft2
8 // The SPDY 3 spec can be found at: 8 // The SPDY 3 spec can be found at:
9 // http://dev.chromium.org/spdy/spdy-protocol/spdy-protocol-draft3 9 // http://dev.chromium.org/spdy/spdy-protocol/spdy-protocol-draft3
10 10
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 51
52 // Initial window size for a Spdy session in bytes. 52 // Initial window size for a Spdy session in bytes.
53 const int32 kSpdySessionInitialWindowSize = 64 * 1024; // 64 KBytes 53 const int32 kSpdySessionInitialWindowSize = 64 * 1024; // 64 KBytes
54 54
55 // Maximum window size for a Spdy stream or session. 55 // Maximum window size for a Spdy stream or session.
56 const int32 kSpdyMaximumWindowSize = 0x7FFFFFFF; // Max signed 32bit int 56 const int32 kSpdyMaximumWindowSize = 0x7FFFFFFF; // Max signed 32bit int
57 57
58 // SPDY 2 dictionary. 58 // SPDY 2 dictionary.
59 // This is just a hacked dictionary to use for shrinking HTTP-like headers. 59 // This is just a hacked dictionary to use for shrinking HTTP-like headers.
60 const char kV2Dictionary[] = 60 const char kV2Dictionary[] =
61 "optionsgetheadpostputdeletetraceacceptaccept-charsetaccept-encodingaccept-" 61 "optionsgetheadpostputdeletetraceacceptaccept-charsetaccept-encodingaccept-"
62 "languageauthorizationexpectfromhostif-modified-sinceif-matchif-none-matchi" 62 "languageauthorizationexpectfromhostif-modified-sinceif-matchif-none-matchi"
63 "f-rangeif-unmodifiedsincemax-forwardsproxy-authorizationrangerefererteuser" 63 "f-rangeif-unmodifiedsincemax-forwardsproxy-authorizationrangerefererteuser"
64 "-agent10010120020120220320420520630030130230330430530630740040140240340440" 64 "-agent10010120020120220320420520630030130230330430530630740040140240340440"
65 "5406407408409410411412413414415416417500501502503504505accept-rangesageeta" 65 "5406407408409410411412413414415416417500501502503504505accept-rangesageeta"
66 "glocationproxy-authenticatepublicretry-afterservervarywarningwww-authentic" 66 "glocationproxy-authenticatepublicretry-afterservervarywarningwww-authentic"
67 "ateallowcontent-basecontent-encodingcache-controlconnectiondatetrailertran" 67 "ateallowcontent-basecontent-encodingcache-controlconnectiondatetrailertran"
68 "sfer-encodingupgradeviawarningcontent-languagecontent-lengthcontent-locati" 68 "sfer-encodingupgradeviawarningcontent-languagecontent-lengthcontent-locati"
69 "oncontent-md5content-rangecontent-typeetagexpireslast-modifiedset-cookieMo" 69 "oncontent-md5content-rangecontent-typeetagexpireslast-modifiedset-cookieMo"
70 "ndayTuesdayWednesdayThursdayFridaySaturdaySundayJanFebMarAprMayJunJulAugSe" 70 "ndayTuesdayWednesdayThursdayFridaySaturdaySundayJanFebMarAprMayJunJulAugSe"
71 "pOctNovDecchunkedtext/htmlimage/pngimage/jpgimage/gifapplication/xmlapplic" 71 "pOctNovDecchunkedtext/htmlimage/pngimage/jpgimage/gifapplication/xmlapplic"
72 "ation/xhtmltext/plainpublicmax-agecharset=iso-8859-1utf-8gzipdeflateHTTP/1" 72 "ation/xhtmltext/plainpublicmax-agecharset=iso-8859-1utf-8gzipdeflateHTTP/1"
73 ".1statusversionurl"; 73 ".1statusversionurl";
74 const int kV2DictionarySize = arraysize(kV2Dictionary); 74 const int kV2DictionarySize = arraysize(kV2Dictionary);
75 75
76 // SPDY 3 dictionary. 76 // SPDY 3 dictionary.
77 const char kV3Dictionary[] = { 77 const char kV3Dictionary[] = {
78 0x00, 0x00, 0x00, 0x07, 0x6f, 0x70, 0x74, 0x69, // ....opti 78 0x00, 0x00, 0x00, 0x07, 0x6f, 0x70, 0x74, 0x69, // ....opti
79 0x6f, 0x6e, 0x73, 0x00, 0x00, 0x00, 0x04, 0x68, // ons....h 79 0x6f, 0x6e, 0x73, 0x00, 0x00, 0x00, 0x04, 0x68, // ons....h
80 0x65, 0x61, 0x64, 0x00, 0x00, 0x00, 0x04, 0x70, // ead....p 80 0x65, 0x61, 0x64, 0x00, 0x00, 0x00, 0x04, 0x70, // ead....p
81 0x6f, 0x73, 0x74, 0x00, 0x00, 0x00, 0x03, 0x70, // ost....p 81 0x6f, 0x73, 0x74, 0x00, 0x00, 0x00, 0x03, 0x70, // ost....p
82 0x75, 0x74, 0x00, 0x00, 0x00, 0x06, 0x64, 0x65, // ut....de 82 0x75, 0x74, 0x00, 0x00, 0x00, 0x06, 0x64, 0x65, // ut....de
83 0x6c, 0x65, 0x74, 0x65, 0x00, 0x00, 0x00, 0x05, // lete.... 83 0x6c, 0x65, 0x74, 0x65, 0x00, 0x00, 0x00, 0x05, // lete....
84 0x74, 0x72, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00, // trace... 84 0x74, 0x72, 0x61, 0x63, 0x65, 0x00, 0x00, 0x00, // trace...
85 0x06, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x00, // .accept. 85 0x06, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x00, // .accept.
86 0x00, 0x00, 0x0e, 0x61, 0x63, 0x63, 0x65, 0x70, // ...accep 86 0x00, 0x00, 0x0e, 0x61, 0x63, 0x63, 0x65, 0x70, // ...accep
87 0x74, 0x2d, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, // t-charse 87 0x74, 0x2d, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, // t-charse
88 0x74, 0x00, 0x00, 0x00, 0x0f, 0x61, 0x63, 0x63, // t....acc 88 0x74, 0x00, 0x00, 0x00, 0x0f, 0x61, 0x63, 0x63, // t....acc
89 0x65, 0x70, 0x74, 0x2d, 0x65, 0x6e, 0x63, 0x6f, // ept-enco 89 0x65, 0x70, 0x74, 0x2d, 0x65, 0x6e, 0x63, 0x6f, // ept-enco
90 0x64, 0x69, 0x6e, 0x67, 0x00, 0x00, 0x00, 0x0f, // ding.... 90 0x64, 0x69, 0x6e, 0x67, 0x00, 0x00, 0x00, 0x0f, // ding....
91 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x6c, // accept-l 91 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x6c, // accept-l
92 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x00, // anguage. 92 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x00, // anguage.
93 0x00, 0x00, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x70, // ...accep 93 0x00, 0x00, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x70, // ...accep
94 0x74, 0x2d, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, // t-ranges 94 0x74, 0x2d, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, // t-ranges
95 0x00, 0x00, 0x00, 0x03, 0x61, 0x67, 0x65, 0x00, // ....age. 95 0x00, 0x00, 0x00, 0x03, 0x61, 0x67, 0x65, 0x00, // ....age.
96 0x00, 0x00, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x77, // ...allow 96 0x00, 0x00, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x77, // ...allow
97 0x00, 0x00, 0x00, 0x0d, 0x61, 0x75, 0x74, 0x68, // ....auth 97 0x00, 0x00, 0x00, 0x0d, 0x61, 0x75, 0x74, 0x68, // ....auth
98 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, // orizatio 98 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, // orizatio
99 0x6e, 0x00, 0x00, 0x00, 0x0d, 0x63, 0x61, 0x63, // n....cac 99 0x6e, 0x00, 0x00, 0x00, 0x0d, 0x63, 0x61, 0x63, // n....cac
100 0x68, 0x65, 0x2d, 0x63, 0x6f, 0x6e, 0x74, 0x72, // he-contr 100 0x68, 0x65, 0x2d, 0x63, 0x6f, 0x6e, 0x74, 0x72, // he-contr
101 0x6f, 0x6c, 0x00, 0x00, 0x00, 0x0a, 0x63, 0x6f, // ol....co 101 0x6f, 0x6c, 0x00, 0x00, 0x00, 0x0a, 0x63, 0x6f, // ol....co
102 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, // nnection 102 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, // nnection
103 0x00, 0x00, 0x00, 0x0c, 0x63, 0x6f, 0x6e, 0x74, // ....cont 103 0x00, 0x00, 0x00, 0x0c, 0x63, 0x6f, 0x6e, 0x74, // ....cont
104 0x65, 0x6e, 0x74, 0x2d, 0x62, 0x61, 0x73, 0x65, // ent-base 104 0x65, 0x6e, 0x74, 0x2d, 0x62, 0x61, 0x73, 0x65, // ent-base
105 0x00, 0x00, 0x00, 0x10, 0x63, 0x6f, 0x6e, 0x74, // ....cont 105 0x00, 0x00, 0x00, 0x10, 0x63, 0x6f, 0x6e, 0x74, // ....cont
106 0x65, 0x6e, 0x74, 0x2d, 0x65, 0x6e, 0x63, 0x6f, // ent-enco 106 0x65, 0x6e, 0x74, 0x2d, 0x65, 0x6e, 0x63, 0x6f, // ent-enco
107 0x64, 0x69, 0x6e, 0x67, 0x00, 0x00, 0x00, 0x10, // ding.... 107 0x64, 0x69, 0x6e, 0x67, 0x00, 0x00, 0x00, 0x10, // ding....
108 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, // content- 108 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, // content-
109 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, // language 109 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, // language
110 0x00, 0x00, 0x00, 0x0e, 0x63, 0x6f, 0x6e, 0x74, // ....cont 110 0x00, 0x00, 0x00, 0x0e, 0x63, 0x6f, 0x6e, 0x74, // ....cont
111 0x65, 0x6e, 0x74, 0x2d, 0x6c, 0x65, 0x6e, 0x67, // ent-leng 111 0x65, 0x6e, 0x74, 0x2d, 0x6c, 0x65, 0x6e, 0x67, // ent-leng
112 0x74, 0x68, 0x00, 0x00, 0x00, 0x10, 0x63, 0x6f, // th....co 112 0x74, 0x68, 0x00, 0x00, 0x00, 0x10, 0x63, 0x6f, // th....co
113 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x6c, 0x6f, // ntent-lo 113 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x6c, 0x6f, // ntent-lo
114 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, // cation.. 114 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, // cation..
115 0x00, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, // ..conten 115 0x00, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, // ..conten
116 0x74, 0x2d, 0x6d, 0x64, 0x35, 0x00, 0x00, 0x00, // t-md5... 116 0x74, 0x2d, 0x6d, 0x64, 0x35, 0x00, 0x00, 0x00, // t-md5...
117 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, // .content 117 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, // .content
118 0x2d, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x00, 0x00, // -range.. 118 0x2d, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x00, 0x00, // -range..
119 0x00, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, // ..conten 119 0x00, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, // ..conten
120 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x00, 0x00, // t-type.. 120 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x00, 0x00, // t-type..
121 0x00, 0x04, 0x64, 0x61, 0x74, 0x65, 0x00, 0x00, // ..date.. 121 0x00, 0x04, 0x64, 0x61, 0x74, 0x65, 0x00, 0x00, // ..date..
122 0x00, 0x04, 0x65, 0x74, 0x61, 0x67, 0x00, 0x00, // ..etag.. 122 0x00, 0x04, 0x65, 0x74, 0x61, 0x67, 0x00, 0x00, // ..etag..
123 0x00, 0x06, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, // ..expect 123 0x00, 0x06, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, // ..expect
124 0x00, 0x00, 0x00, 0x07, 0x65, 0x78, 0x70, 0x69, // ....expi 124 0x00, 0x00, 0x00, 0x07, 0x65, 0x78, 0x70, 0x69, // ....expi
125 0x72, 0x65, 0x73, 0x00, 0x00, 0x00, 0x04, 0x66, // res....f 125 0x72, 0x65, 0x73, 0x00, 0x00, 0x00, 0x04, 0x66, // res....f
126 0x72, 0x6f, 0x6d, 0x00, 0x00, 0x00, 0x04, 0x68, // rom....h 126 0x72, 0x6f, 0x6d, 0x00, 0x00, 0x00, 0x04, 0x68, // rom....h
127 0x6f, 0x73, 0x74, 0x00, 0x00, 0x00, 0x08, 0x69, // ost....i 127 0x6f, 0x73, 0x74, 0x00, 0x00, 0x00, 0x08, 0x69, // ost....i
128 0x66, 0x2d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x00, // f-match. 128 0x66, 0x2d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x00, // f-match.
129 0x00, 0x00, 0x11, 0x69, 0x66, 0x2d, 0x6d, 0x6f, // ...if-mo 129 0x00, 0x00, 0x11, 0x69, 0x66, 0x2d, 0x6d, 0x6f, // ...if-mo
130 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2d, 0x73, // dified-s 130 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2d, 0x73, // dified-s
131 0x69, 0x6e, 0x63, 0x65, 0x00, 0x00, 0x00, 0x0d, // ince.... 131 0x69, 0x6e, 0x63, 0x65, 0x00, 0x00, 0x00, 0x0d, // ince....
132 0x69, 0x66, 0x2d, 0x6e, 0x6f, 0x6e, 0x65, 0x2d, // if-none- 132 0x69, 0x66, 0x2d, 0x6e, 0x6f, 0x6e, 0x65, 0x2d, // if-none-
133 0x6d, 0x61, 0x74, 0x63, 0x68, 0x00, 0x00, 0x00, // match... 133 0x6d, 0x61, 0x74, 0x63, 0x68, 0x00, 0x00, 0x00, // match...
134 0x08, 0x69, 0x66, 0x2d, 0x72, 0x61, 0x6e, 0x67, // .if-rang 134 0x08, 0x69, 0x66, 0x2d, 0x72, 0x61, 0x6e, 0x67, // .if-rang
135 0x65, 0x00, 0x00, 0x00, 0x13, 0x69, 0x66, 0x2d, // e....if- 135 0x65, 0x00, 0x00, 0x00, 0x13, 0x69, 0x66, 0x2d, // e....if-
136 0x75, 0x6e, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, // unmodifi 136 0x75, 0x6e, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, // unmodifi
137 0x65, 0x64, 0x2d, 0x73, 0x69, 0x6e, 0x63, 0x65, // ed-since 137 0x65, 0x64, 0x2d, 0x73, 0x69, 0x6e, 0x63, 0x65, // ed-since
138 0x00, 0x00, 0x00, 0x0d, 0x6c, 0x61, 0x73, 0x74, // ....last 138 0x00, 0x00, 0x00, 0x0d, 0x6c, 0x61, 0x73, 0x74, // ....last
139 0x2d, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, // -modifie 139 0x2d, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, // -modifie
140 0x64, 0x00, 0x00, 0x00, 0x08, 0x6c, 0x6f, 0x63, // d....loc 140 0x64, 0x00, 0x00, 0x00, 0x08, 0x6c, 0x6f, 0x63, // d....loc
141 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, // ation... 141 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, // ation...
142 0x0c, 0x6d, 0x61, 0x78, 0x2d, 0x66, 0x6f, 0x72, // .max-for 142 0x0c, 0x6d, 0x61, 0x78, 0x2d, 0x66, 0x6f, 0x72, // .max-for
143 0x77, 0x61, 0x72, 0x64, 0x73, 0x00, 0x00, 0x00, // wards... 143 0x77, 0x61, 0x72, 0x64, 0x73, 0x00, 0x00, 0x00, // wards...
144 0x06, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x00, // .pragma. 144 0x06, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x00, // .pragma.
145 0x00, 0x00, 0x12, 0x70, 0x72, 0x6f, 0x78, 0x79, // ...proxy 145 0x00, 0x00, 0x12, 0x70, 0x72, 0x6f, 0x78, 0x79, // ...proxy
146 0x2d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, // -authent 146 0x2d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, // -authent
147 0x69, 0x63, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, // icate... 147 0x69, 0x63, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, // icate...
148 0x13, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2d, 0x61, // .proxy-a 148 0x13, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2d, 0x61, // .proxy-a
149 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, // uthoriza 149 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, // uthoriza
150 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, // tion.... 150 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, // tion....
151 0x72, 0x61, 0x6e, 0x67, 0x65, 0x00, 0x00, 0x00, // range... 151 0x72, 0x61, 0x6e, 0x67, 0x65, 0x00, 0x00, 0x00, // range...
152 0x07, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, // .referer 152 0x07, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, // .referer
153 0x00, 0x00, 0x00, 0x0b, 0x72, 0x65, 0x74, 0x72, // ....retr 153 0x00, 0x00, 0x00, 0x0b, 0x72, 0x65, 0x74, 0x72, // ....retr
154 0x79, 0x2d, 0x61, 0x66, 0x74, 0x65, 0x72, 0x00, // y-after. 154 0x79, 0x2d, 0x61, 0x66, 0x74, 0x65, 0x72, 0x00, // y-after.
155 0x00, 0x00, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, // ...serve 155 0x00, 0x00, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, // ...serve
156 0x72, 0x00, 0x00, 0x00, 0x02, 0x74, 0x65, 0x00, // r....te. 156 0x72, 0x00, 0x00, 0x00, 0x02, 0x74, 0x65, 0x00, // r....te.
157 0x00, 0x00, 0x07, 0x74, 0x72, 0x61, 0x69, 0x6c, // ...trail 157 0x00, 0x00, 0x07, 0x74, 0x72, 0x61, 0x69, 0x6c, // ...trail
158 0x65, 0x72, 0x00, 0x00, 0x00, 0x11, 0x74, 0x72, // er....tr 158 0x65, 0x72, 0x00, 0x00, 0x00, 0x11, 0x74, 0x72, // er....tr
159 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x65, // ansfer-e 159 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x65, // ansfer-e
160 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x00, // ncoding. 160 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x00, // ncoding.
161 0x00, 0x00, 0x07, 0x75, 0x70, 0x67, 0x72, 0x61, // ...upgra 161 0x00, 0x00, 0x07, 0x75, 0x70, 0x67, 0x72, 0x61, // ...upgra
162 0x64, 0x65, 0x00, 0x00, 0x00, 0x0a, 0x75, 0x73, // de....us 162 0x64, 0x65, 0x00, 0x00, 0x00, 0x0a, 0x75, 0x73, // de....us
163 0x65, 0x72, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, // er-agent 163 0x65, 0x72, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, // er-agent
164 0x00, 0x00, 0x00, 0x04, 0x76, 0x61, 0x72, 0x79, // ....vary 164 0x00, 0x00, 0x00, 0x04, 0x76, 0x61, 0x72, 0x79, // ....vary
165 0x00, 0x00, 0x00, 0x03, 0x76, 0x69, 0x61, 0x00, // ....via. 165 0x00, 0x00, 0x00, 0x03, 0x76, 0x69, 0x61, 0x00, // ....via.
166 0x00, 0x00, 0x07, 0x77, 0x61, 0x72, 0x6e, 0x69, // ...warni 166 0x00, 0x00, 0x07, 0x77, 0x61, 0x72, 0x6e, 0x69, // ...warni
167 0x6e, 0x67, 0x00, 0x00, 0x00, 0x10, 0x77, 0x77, // ng....ww 167 0x6e, 0x67, 0x00, 0x00, 0x00, 0x10, 0x77, 0x77, // ng....ww
168 0x77, 0x2d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, // w-authen 168 0x77, 0x2d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, // w-authen
169 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x00, 0x00, // ticate.. 169 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x00, 0x00, // ticate..
170 0x00, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, // ..method 170 0x00, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, // ..method
171 0x00, 0x00, 0x00, 0x03, 0x67, 0x65, 0x74, 0x00, // ....get. 171 0x00, 0x00, 0x00, 0x03, 0x67, 0x65, 0x74, 0x00, // ....get.
172 0x00, 0x00, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, // ...statu 172 0x00, 0x00, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, // ...statu
173 0x73, 0x00, 0x00, 0x00, 0x06, 0x32, 0x30, 0x30, // s....200 173 0x73, 0x00, 0x00, 0x00, 0x06, 0x32, 0x30, 0x30, // s....200
174 0x20, 0x4f, 0x4b, 0x00, 0x00, 0x00, 0x07, 0x76, // .OK....v 174 0x20, 0x4f, 0x4b, 0x00, 0x00, 0x00, 0x07, 0x76, // .OK....v
175 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x00, 0x00, // ersion.. 175 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x00, 0x00, // ersion..
176 0x00, 0x08, 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, // ..HTTP.1 176 0x00, 0x08, 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, // ..HTTP.1
177 0x2e, 0x31, 0x00, 0x00, 0x00, 0x03, 0x75, 0x72, // .1....ur 177 0x2e, 0x31, 0x00, 0x00, 0x00, 0x03, 0x75, 0x72, // .1....ur
178 0x6c, 0x00, 0x00, 0x00, 0x06, 0x70, 0x75, 0x62, // l....pub 178 0x6c, 0x00, 0x00, 0x00, 0x06, 0x70, 0x75, 0x62, // l....pub
179 0x6c, 0x69, 0x63, 0x00, 0x00, 0x00, 0x0a, 0x73, // lic....s 179 0x6c, 0x69, 0x63, 0x00, 0x00, 0x00, 0x0a, 0x73, // lic....s
180 0x65, 0x74, 0x2d, 0x63, 0x6f, 0x6f, 0x6b, 0x69, // et-cooki 180 0x65, 0x74, 0x2d, 0x63, 0x6f, 0x6f, 0x6b, 0x69, // et-cooki
181 0x65, 0x00, 0x00, 0x00, 0x0a, 0x6b, 0x65, 0x65, // e....kee 181 0x65, 0x00, 0x00, 0x00, 0x0a, 0x6b, 0x65, 0x65, // e....kee
182 0x70, 0x2d, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x00, // p-alive. 182 0x70, 0x2d, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x00, // p-alive.
183 0x00, 0x00, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, // ...origi 183 0x00, 0x00, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, // ...origi
184 0x6e, 0x31, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, // n1001012 184 0x6e, 0x31, 0x30, 0x30, 0x31, 0x30, 0x31, 0x32, // n1001012
185 0x30, 0x31, 0x32, 0x30, 0x32, 0x32, 0x30, 0x35, // 01202205 185 0x30, 0x31, 0x32, 0x30, 0x32, 0x32, 0x30, 0x35, // 01202205
186 0x32, 0x30, 0x36, 0x33, 0x30, 0x30, 0x33, 0x30, // 20630030 186 0x32, 0x30, 0x36, 0x33, 0x30, 0x30, 0x33, 0x30, // 20630030
187 0x32, 0x33, 0x30, 0x33, 0x33, 0x30, 0x34, 0x33, // 23033043 187 0x32, 0x33, 0x30, 0x33, 0x33, 0x30, 0x34, 0x33, // 23033043
188 0x30, 0x35, 0x33, 0x30, 0x36, 0x33, 0x30, 0x37, // 05306307 188 0x30, 0x35, 0x33, 0x30, 0x36, 0x33, 0x30, 0x37, // 05306307
189 0x34, 0x30, 0x32, 0x34, 0x30, 0x35, 0x34, 0x30, // 40240540 189 0x34, 0x30, 0x32, 0x34, 0x30, 0x35, 0x34, 0x30, // 40240540
190 0x36, 0x34, 0x30, 0x37, 0x34, 0x30, 0x38, 0x34, // 64074084 190 0x36, 0x34, 0x30, 0x37, 0x34, 0x30, 0x38, 0x34, // 64074084
191 0x30, 0x39, 0x34, 0x31, 0x30, 0x34, 0x31, 0x31, // 09410411 191 0x30, 0x39, 0x34, 0x31, 0x30, 0x34, 0x31, 0x31, // 09410411
192 0x34, 0x31, 0x32, 0x34, 0x31, 0x33, 0x34, 0x31, // 41241341 192 0x34, 0x31, 0x32, 0x34, 0x31, 0x33, 0x34, 0x31, // 41241341
193 0x34, 0x34, 0x31, 0x35, 0x34, 0x31, 0x36, 0x34, // 44154164 193 0x34, 0x34, 0x31, 0x35, 0x34, 0x31, 0x36, 0x34, // 44154164
194 0x31, 0x37, 0x35, 0x30, 0x32, 0x35, 0x30, 0x34, // 17502504 194 0x31, 0x37, 0x35, 0x30, 0x32, 0x35, 0x30, 0x34, // 17502504
195 0x35, 0x30, 0x35, 0x32, 0x30, 0x33, 0x20, 0x4e, // 505203.N 195 0x35, 0x30, 0x35, 0x32, 0x30, 0x33, 0x20, 0x4e, // 505203.N
196 0x6f, 0x6e, 0x2d, 0x41, 0x75, 0x74, 0x68, 0x6f, // on-Autho 196 0x6f, 0x6e, 0x2d, 0x41, 0x75, 0x74, 0x68, 0x6f, // on-Autho
197 0x72, 0x69, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, // ritative 197 0x72, 0x69, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, // ritative
198 0x20, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, // .Informa 198 0x20, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, // .Informa
199 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x30, 0x34, 0x20, // tion204. 199 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x30, 0x34, 0x20, // tion204.
200 0x4e, 0x6f, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x65, // No.Conte 200 0x4e, 0x6f, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x65, // No.Conte
201 0x6e, 0x74, 0x33, 0x30, 0x31, 0x20, 0x4d, 0x6f, // nt301.Mo 201 0x6e, 0x74, 0x33, 0x30, 0x31, 0x20, 0x4d, 0x6f, // nt301.Mo
202 0x76, 0x65, 0x64, 0x20, 0x50, 0x65, 0x72, 0x6d, // ved.Perm 202 0x76, 0x65, 0x64, 0x20, 0x50, 0x65, 0x72, 0x6d, // ved.Perm
203 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x34, // anently4 203 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x34, // anently4
204 0x30, 0x30, 0x20, 0x42, 0x61, 0x64, 0x20, 0x52, // 00.Bad.R 204 0x30, 0x30, 0x20, 0x42, 0x61, 0x64, 0x20, 0x52, // 00.Bad.R
205 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x34, 0x30, // equest40 205 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x34, 0x30, // equest40
206 0x31, 0x20, 0x55, 0x6e, 0x61, 0x75, 0x74, 0x68, // 1.Unauth 206 0x31, 0x20, 0x55, 0x6e, 0x61, 0x75, 0x74, 0x68, // 1.Unauth
207 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x34, 0x30, // orized40 207 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x34, 0x30, // orized40
208 0x33, 0x20, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, // 3.Forbid 208 0x33, 0x20, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, // 3.Forbid
209 0x64, 0x65, 0x6e, 0x34, 0x30, 0x34, 0x20, 0x4e, // den404.N 209 0x64, 0x65, 0x6e, 0x34, 0x30, 0x34, 0x20, 0x4e, // den404.N
210 0x6f, 0x74, 0x20, 0x46, 0x6f, 0x75, 0x6e, 0x64, // ot.Found 210 0x6f, 0x74, 0x20, 0x46, 0x6f, 0x75, 0x6e, 0x64, // ot.Found
211 0x35, 0x30, 0x30, 0x20, 0x49, 0x6e, 0x74, 0x65, // 500.Inte 211 0x35, 0x30, 0x30, 0x20, 0x49, 0x6e, 0x74, 0x65, // 500.Inte
212 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x53, 0x65, 0x72, // rnal.Ser 212 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x53, 0x65, 0x72, // rnal.Ser
213 0x76, 0x65, 0x72, 0x20, 0x45, 0x72, 0x72, 0x6f, // ver.Erro 213 0x76, 0x65, 0x72, 0x20, 0x45, 0x72, 0x72, 0x6f, // ver.Erro
214 0x72, 0x35, 0x30, 0x31, 0x20, 0x4e, 0x6f, 0x74, // r501.Not 214 0x72, 0x35, 0x30, 0x31, 0x20, 0x4e, 0x6f, 0x74, // r501.Not
215 0x20, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, // .Impleme 215 0x20, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, // .Impleme
216 0x6e, 0x74, 0x65, 0x64, 0x35, 0x30, 0x33, 0x20, // nted503. 216 0x6e, 0x74, 0x65, 0x64, 0x35, 0x30, 0x33, 0x20, // nted503.
217 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, // Service. 217 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, // Service.
218 0x55, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, // Unavaila 218 0x55, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, // Unavaila
219 0x62, 0x6c, 0x65, 0x4a, 0x61, 0x6e, 0x20, 0x46, // bleJan.F 219 0x62, 0x6c, 0x65, 0x4a, 0x61, 0x6e, 0x20, 0x46, // bleJan.F
220 0x65, 0x62, 0x20, 0x4d, 0x61, 0x72, 0x20, 0x41, // eb.Mar.A 220 0x65, 0x62, 0x20, 0x4d, 0x61, 0x72, 0x20, 0x41, // eb.Mar.A
221 0x70, 0x72, 0x20, 0x4d, 0x61, 0x79, 0x20, 0x4a, // pr.May.J 221 0x70, 0x72, 0x20, 0x4d, 0x61, 0x79, 0x20, 0x4a, // pr.May.J
222 0x75, 0x6e, 0x20, 0x4a, 0x75, 0x6c, 0x20, 0x41, // un.Jul.A 222 0x75, 0x6e, 0x20, 0x4a, 0x75, 0x6c, 0x20, 0x41, // un.Jul.A
223 0x75, 0x67, 0x20, 0x53, 0x65, 0x70, 0x74, 0x20, // ug.Sept. 223 0x75, 0x67, 0x20, 0x53, 0x65, 0x70, 0x74, 0x20, // ug.Sept.
224 0x4f, 0x63, 0x74, 0x20, 0x4e, 0x6f, 0x76, 0x20, // Oct.Nov. 224 0x4f, 0x63, 0x74, 0x20, 0x4e, 0x6f, 0x76, 0x20, // Oct.Nov.
225 0x44, 0x65, 0x63, 0x20, 0x30, 0x30, 0x3a, 0x30, // Dec.00.0 225 0x44, 0x65, 0x63, 0x20, 0x30, 0x30, 0x3a, 0x30, // Dec.00.0
226 0x30, 0x3a, 0x30, 0x30, 0x20, 0x4d, 0x6f, 0x6e, // 0.00.Mon 226 0x30, 0x3a, 0x30, 0x30, 0x20, 0x4d, 0x6f, 0x6e, // 0.00.Mon
227 0x2c, 0x20, 0x54, 0x75, 0x65, 0x2c, 0x20, 0x57, // ..Tue..W 227 0x2c, 0x20, 0x54, 0x75, 0x65, 0x2c, 0x20, 0x57, // ..Tue..W
228 0x65, 0x64, 0x2c, 0x20, 0x54, 0x68, 0x75, 0x2c, // ed..Thu. 228 0x65, 0x64, 0x2c, 0x20, 0x54, 0x68, 0x75, 0x2c, // ed..Thu.
229 0x20, 0x46, 0x72, 0x69, 0x2c, 0x20, 0x53, 0x61, // .Fri..Sa 229 0x20, 0x46, 0x72, 0x69, 0x2c, 0x20, 0x53, 0x61, // .Fri..Sa
230 0x74, 0x2c, 0x20, 0x53, 0x75, 0x6e, 0x2c, 0x20, // t..Sun.. 230 0x74, 0x2c, 0x20, 0x53, 0x75, 0x6e, 0x2c, 0x20, // t..Sun..
231 0x47, 0x4d, 0x54, 0x63, 0x68, 0x75, 0x6e, 0x6b, // GMTchunk 231 0x47, 0x4d, 0x54, 0x63, 0x68, 0x75, 0x6e, 0x6b, // GMTchunk
232 0x65, 0x64, 0x2c, 0x74, 0x65, 0x78, 0x74, 0x2f, // ed.text. 232 0x65, 0x64, 0x2c, 0x74, 0x65, 0x78, 0x74, 0x2f, // ed.text.
233 0x68, 0x74, 0x6d, 0x6c, 0x2c, 0x69, 0x6d, 0x61, // html.ima 233 0x68, 0x74, 0x6d, 0x6c, 0x2c, 0x69, 0x6d, 0x61, // html.ima
234 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0x2c, 0x69, // ge.png.i 234 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0x2c, 0x69, // ge.png.i
235 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x67, // mage.jpg 235 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x67, // mage.jpg
236 0x2c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, // .image.g 236 0x2c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, // .image.g
237 0x69, 0x66, 0x2c, 0x61, 0x70, 0x70, 0x6c, 0x69, // if.appli 237 0x69, 0x66, 0x2c, 0x61, 0x70, 0x70, 0x6c, 0x69, // if.appli
238 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, // cation.x 238 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, // cation.x
239 0x6d, 0x6c, 0x2c, 0x61, 0x70, 0x70, 0x6c, 0x69, // ml.appli 239 0x6d, 0x6c, 0x2c, 0x61, 0x70, 0x70, 0x6c, 0x69, // ml.appli
240 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, // cation.x 240 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, // cation.x
241 0x68, 0x74, 0x6d, 0x6c, 0x2b, 0x78, 0x6d, 0x6c, // html.xml 241 0x68, 0x74, 0x6d, 0x6c, 0x2b, 0x78, 0x6d, 0x6c, // html.xml
242 0x2c, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, // .text.pl 242 0x2c, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, // .text.pl
243 0x61, 0x69, 0x6e, 0x2c, 0x74, 0x65, 0x78, 0x74, // ain.text 243 0x61, 0x69, 0x6e, 0x2c, 0x74, 0x65, 0x78, 0x74, // ain.text
244 0x2f, 0x6a, 0x61, 0x76, 0x61, 0x73, 0x63, 0x72, // .javascr 244 0x2f, 0x6a, 0x61, 0x76, 0x61, 0x73, 0x63, 0x72, // .javascr
245 0x69, 0x70, 0x74, 0x2c, 0x70, 0x75, 0x62, 0x6c, // ipt.publ 245 0x69, 0x70, 0x74, 0x2c, 0x70, 0x75, 0x62, 0x6c, // ipt.publ
246 0x69, 0x63, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, // icprivat 246 0x69, 0x63, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, // icprivat
247 0x65, 0x6d, 0x61, 0x78, 0x2d, 0x61, 0x67, 0x65, // emax-age 247 0x65, 0x6d, 0x61, 0x78, 0x2d, 0x61, 0x67, 0x65, // emax-age
248 0x3d, 0x67, 0x7a, 0x69, 0x70, 0x2c, 0x64, 0x65, // .gzip.de 248 0x3d, 0x67, 0x7a, 0x69, 0x70, 0x2c, 0x64, 0x65, // .gzip.de
249 0x66, 0x6c, 0x61, 0x74, 0x65, 0x2c, 0x73, 0x64, // flate.sd 249 0x66, 0x6c, 0x61, 0x74, 0x65, 0x2c, 0x73, 0x64, // flate.sd
250 0x63, 0x68, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, // chcharse 250 0x63, 0x68, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, // chcharse
251 0x74, 0x3d, 0x75, 0x74, 0x66, 0x2d, 0x38, 0x63, // t.utf-8c 251 0x74, 0x3d, 0x75, 0x74, 0x66, 0x2d, 0x38, 0x63, // t.utf-8c
252 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3d, 0x69, // harset.i 252 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3d, 0x69, // harset.i
253 0x73, 0x6f, 0x2d, 0x38, 0x38, 0x35, 0x39, 0x2d, // so-8859- 253 0x73, 0x6f, 0x2d, 0x38, 0x38, 0x35, 0x39, 0x2d, // so-8859-
254 0x31, 0x2c, 0x75, 0x74, 0x66, 0x2d, 0x2c, 0x2a, // 1.utf-.. 254 0x31, 0x2c, 0x75, 0x74, 0x66, 0x2d, 0x2c, 0x2a, // 1.utf-..
255 0x2c, 0x65, 0x6e, 0x71, 0x3d, 0x30, 0x2e // .enq.0. 255 0x2c, 0x65, 0x6e, 0x71, 0x3d, 0x30, 0x2e // .enq.0.
256 }; 256 };
257 const int kV3DictionarySize = arraysize(kV3Dictionary); 257 const int kV3DictionarySize = arraysize(kV3Dictionary);
258 258
259 // The HTTP/2 connection header prefix, which must be the first bytes 259 // The HTTP/2 connection header prefix, which must be the first bytes
260 // sent by the client upon starting an HTTP/2 connection, and which 260 // sent by the client upon starting an HTTP/2 connection, and which
261 // must be followed by a SETTINGS frame. 261 // must be followed by a SETTINGS frame.
262 // 262 //
263 // Equivalent to the string "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n" 263 // Equivalent to the string "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"
264 // (without the null terminator). 264 // (without the null terminator).
265 const char kHttp2ConnectionHeaderPrefix[] = { 265 const char kHttp2ConnectionHeaderPrefix[] = {
266 0x50, 0x52, 0x49, 0x20, 0x2a, 0x20, 0x48, 0x54, // PRI * HT 266 0x50, 0x52, 0x49, 0x20, 0x2a,
267 0x54, 0x50, 0x2f, 0x32, 0x2e, 0x30, 0x0d, 0x0a, // TP/2.0.. 267 0x20, 0x48, 0x54, // PRI * HT
268 0x0d, 0x0a, 0x53, 0x4d, 0x0d, 0x0a, 0x0d, 0x0a // ..SM.... 268 0x54, 0x50, 0x2f, 0x32, 0x2e,
269 0x30, 0x0d, 0x0a, // TP/2.0..
270 0x0d, 0x0a, 0x53, 0x4d, 0x0d,
271 0x0a, 0x0d, 0x0a // ..SM....
269 }; 272 };
270 const int kHttp2ConnectionHeaderPrefixSize = 273 const int kHttp2ConnectionHeaderPrefixSize =
271 arraysize(kHttp2ConnectionHeaderPrefix); 274 arraysize(kHttp2ConnectionHeaderPrefix);
272 275
273 // Types of SPDY frames. 276 // Types of SPDY frames.
274 enum SpdyFrameType { 277 enum SpdyFrameType {
275 DATA = 0, 278 DATA = 0,
276 SYN_STREAM = 1, 279 SYN_STREAM = 1,
277 FIRST_CONTROL_TYPE = SYN_STREAM, 280 FIRST_CONTROL_TYPE = SYN_STREAM,
278 SYN_REPLY, 281 SYN_REPLY,
279 RST_STREAM, 282 RST_STREAM,
280 SETTINGS, 283 SETTINGS,
281 NOOP, // Because it is valid in SPDY/2, kept for identifiability/enum order. 284 NOOP, // Because it is valid in SPDY/2, kept for identifiability/enum order.
282 PING, 285 PING,
283 GOAWAY, 286 GOAWAY,
284 HEADERS, 287 HEADERS,
285 WINDOW_UPDATE, 288 WINDOW_UPDATE,
286 CREDENTIAL, // No longer valid. Kept for identifiability/enum order. 289 CREDENTIAL, // No longer valid. Kept for identifiability/enum order.
287 BLOCKED, 290 BLOCKED,
288 PUSH_PROMISE, 291 PUSH_PROMISE,
289 CONTINUATION, 292 CONTINUATION,
290 LAST_CONTROL_TYPE = CONTINUATION 293 LAST_CONTROL_TYPE = CONTINUATION
291 }; 294 };
292 295
293 // Flags on data packets. 296 // Flags on data packets.
294 enum SpdyDataFlags { 297 enum SpdyDataFlags {
295 DATA_FLAG_NONE = 0x00, 298 DATA_FLAG_NONE = 0x00,
296 DATA_FLAG_FIN = 0x01, 299 DATA_FLAG_FIN = 0x01,
297 DATA_FLAG_END_SEGMENT = 0x02, 300 DATA_FLAG_END_SEGMENT = 0x02,
298 DATA_FLAG_PAD_LOW = 0x10, 301 DATA_FLAG_PAD_LOW = 0x10,
299 DATA_FLAG_PAD_HIGH = 0x20 302 DATA_FLAG_PAD_HIGH = 0x20
300 }; 303 };
301 304
302 // Flags on control packets 305 // Flags on control packets
303 enum SpdyControlFlags { 306 enum SpdyControlFlags {
304 CONTROL_FLAG_NONE = 0, 307 CONTROL_FLAG_NONE = 0,
305 CONTROL_FLAG_FIN = 1, 308 CONTROL_FLAG_FIN = 1,
306 CONTROL_FLAG_UNIDIRECTIONAL = 2 309 CONTROL_FLAG_UNIDIRECTIONAL = 2
307 }; 310 };
308 311
309 enum SpdyPingFlags { 312 enum SpdyPingFlags {
310 PING_FLAG_ACK = 0x1, 313 PING_FLAG_ACK = 0x1,
311 }; 314 };
312 315
313 enum SpdyHeadersFlags { 316 enum SpdyHeadersFlags {
314 HEADERS_FLAG_END_HEADERS = 0x4, 317 HEADERS_FLAG_END_HEADERS = 0x4,
315 HEADERS_FLAG_PRIORITY = 0x8 318 HEADERS_FLAG_PRIORITY = 0x8
316 }; 319 };
317 320
318 enum SpdyPushPromiseFlags { 321 enum SpdyPushPromiseFlags { PUSH_PROMISE_FLAG_END_PUSH_PROMISE = 0x4 };
319 PUSH_PROMISE_FLAG_END_PUSH_PROMISE = 0x4
320 };
321 322
322 // Flags on the SETTINGS control frame. 323 // Flags on the SETTINGS control frame.
323 enum SpdySettingsControlFlags { 324 enum SpdySettingsControlFlags {
324 SETTINGS_FLAG_CLEAR_PREVIOUSLY_PERSISTED_SETTINGS = 0x1 325 SETTINGS_FLAG_CLEAR_PREVIOUSLY_PERSISTED_SETTINGS = 0x1
325 }; 326 };
326 327
327 enum Http2SettingsControlFlags { 328 enum Http2SettingsControlFlags {
328 SETTINGS_FLAG_ACK = 0x1, 329 SETTINGS_FLAG_ACK = 0x1,
329 }; 330 };
330 331
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 // Abstract class intended to be inherited by IRs that have the option of a FIN 549 // Abstract class intended to be inherited by IRs that have the option of a FIN
549 // flag. Implies SpdyFrameWithStreamIdIR. 550 // flag. Implies SpdyFrameWithStreamIdIR.
550 class NET_EXPORT_PRIVATE SpdyFrameWithFinIR : public SpdyFrameWithStreamIdIR { 551 class NET_EXPORT_PRIVATE SpdyFrameWithFinIR : public SpdyFrameWithStreamIdIR {
551 public: 552 public:
552 virtual ~SpdyFrameWithFinIR() {} 553 virtual ~SpdyFrameWithFinIR() {}
553 bool fin() const { return fin_; } 554 bool fin() const { return fin_; }
554 void set_fin(bool fin) { fin_ = fin; } 555 void set_fin(bool fin) { fin_ = fin; }
555 556
556 protected: 557 protected:
557 explicit SpdyFrameWithFinIR(SpdyStreamId stream_id) 558 explicit SpdyFrameWithFinIR(SpdyStreamId stream_id)
558 : SpdyFrameWithStreamIdIR(stream_id), 559 : SpdyFrameWithStreamIdIR(stream_id), fin_(false) {}
559 fin_(false) {}
560 560
561 private: 561 private:
562 bool fin_; 562 bool fin_;
563 563
564 DISALLOW_COPY_AND_ASSIGN(SpdyFrameWithFinIR); 564 DISALLOW_COPY_AND_ASSIGN(SpdyFrameWithFinIR);
565 }; 565 };
566 566
567 // Abstract class intended to be inherited by IRs that contain a name-value 567 // Abstract class intended to be inherited by IRs that contain a name-value
568 // block. Implies SpdyFrameWithFinIR. 568 // block. Implies SpdyFrameWithFinIR.
569 class NET_EXPORT_PRIVATE SpdyFrameWithNameValueBlockIR 569 class NET_EXPORT_PRIVATE SpdyFrameWithNameValueBlockIR
570 : public NON_EXPORTED_BASE(SpdyFrameWithFinIR) { 570 : public NON_EXPORTED_BASE(SpdyFrameWithFinIR) {
571 public: 571 public:
572 const SpdyNameValueBlock& name_value_block() const { 572 const SpdyNameValueBlock& name_value_block() const {
573 return name_value_block_; 573 return name_value_block_;
574 } 574 }
575 void set_name_value_block(const SpdyNameValueBlock& name_value_block) { 575 void set_name_value_block(const SpdyNameValueBlock& name_value_block) {
576 // Deep copy. 576 // Deep copy.
577 name_value_block_ = name_value_block; 577 name_value_block_ = name_value_block;
578 } 578 }
579 void SetHeader(const base::StringPiece& name, 579 void SetHeader(const base::StringPiece& name,
580 const base::StringPiece& value) { 580 const base::StringPiece& value) {
581 name_value_block_[name.as_string()] = value.as_string(); 581 name_value_block_[name.as_string()] = value.as_string();
582 } 582 }
583 SpdyNameValueBlock* mutable_name_value_block() { 583 SpdyNameValueBlock* mutable_name_value_block() { return &name_value_block_; }
584 return &name_value_block_;
585 }
586 584
587 protected: 585 protected:
588 explicit SpdyFrameWithNameValueBlockIR(SpdyStreamId stream_id); 586 explicit SpdyFrameWithNameValueBlockIR(SpdyStreamId stream_id);
589 virtual ~SpdyFrameWithNameValueBlockIR(); 587 virtual ~SpdyFrameWithNameValueBlockIR();
590 588
591 private: 589 private:
592 SpdyNameValueBlock name_value_block_; 590 SpdyNameValueBlock name_value_block_;
593 591
594 DISALLOW_COPY_AND_ASSIGN(SpdyFrameWithNameValueBlockIR); 592 DISALLOW_COPY_AND_ASSIGN(SpdyFrameWithNameValueBlockIR);
595 }; 593 };
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
694 : SpdyFrameWithNameValueBlockIR(stream_id) {} 692 : SpdyFrameWithNameValueBlockIR(stream_id) {}
695 693
696 virtual void Visit(SpdyFrameVisitor* visitor) const OVERRIDE; 694 virtual void Visit(SpdyFrameVisitor* visitor) const OVERRIDE;
697 695
698 private: 696 private:
699 DISALLOW_COPY_AND_ASSIGN(SpdySynReplyIR); 697 DISALLOW_COPY_AND_ASSIGN(SpdySynReplyIR);
700 }; 698 };
701 699
702 class NET_EXPORT_PRIVATE SpdyRstStreamIR : public SpdyFrameWithStreamIdIR { 700 class NET_EXPORT_PRIVATE SpdyRstStreamIR : public SpdyFrameWithStreamIdIR {
703 public: 701 public:
704 SpdyRstStreamIR(SpdyStreamId stream_id, SpdyRstStreamStatus status, 702 SpdyRstStreamIR(SpdyStreamId stream_id,
703 SpdyRstStreamStatus status,
705 base::StringPiece description); 704 base::StringPiece description);
706 705
707 virtual ~SpdyRstStreamIR(); 706 virtual ~SpdyRstStreamIR();
708 707
709 SpdyRstStreamStatus status() const { 708 SpdyRstStreamStatus status() const { return status_; }
710 return status_; 709 void set_status(SpdyRstStreamStatus status) { status_ = status; }
711 }
712 void set_status(SpdyRstStreamStatus status) {
713 status_ = status;
714 }
715 710
716 base::StringPiece description() const { return description_; } 711 base::StringPiece description() const { return description_; }
717 712
718 void set_description(base::StringPiece description) { 713 void set_description(base::StringPiece description) {
719 description_ = description; 714 description_ = description;
720 } 715 }
721 716
722 virtual void Visit(SpdyFrameVisitor* visitor) const OVERRIDE; 717 virtual void Visit(SpdyFrameVisitor* visitor) const OVERRIDE;
723 718
724 private: 719 private:
725 SpdyRstStreamStatus status_; 720 SpdyRstStreamStatus status_;
726 base::StringPiece description_; 721 base::StringPiece description_;
727 722
728 DISALLOW_COPY_AND_ASSIGN(SpdyRstStreamIR); 723 DISALLOW_COPY_AND_ASSIGN(SpdyRstStreamIR);
729 }; 724 };
730 725
731 class NET_EXPORT_PRIVATE SpdySettingsIR : public SpdyFrameIR { 726 class NET_EXPORT_PRIVATE SpdySettingsIR : public SpdyFrameIR {
732 public: 727 public:
733 // Associates flags with a value. 728 // Associates flags with a value.
734 struct Value { 729 struct Value {
735 Value() : persist_value(false), 730 Value() : persist_value(false), persisted(false), value(0) {}
736 persisted(false),
737 value(0) {}
738 bool persist_value; 731 bool persist_value;
739 bool persisted; 732 bool persisted;
740 int32 value; 733 int32 value;
741 }; 734 };
742 typedef std::map<SpdySettingsIds, Value> ValueMap; 735 typedef std::map<SpdySettingsIds, Value> ValueMap;
743 736
744 SpdySettingsIR(); 737 SpdySettingsIR();
745 738
746 virtual ~SpdySettingsIR(); 739 virtual ~SpdySettingsIR();
747 740
748 // Overwrites as appropriate. 741 // Overwrites as appropriate.
749 const ValueMap& values() const { return values_; } 742 const ValueMap& values() const { return values_; }
750 void AddSetting(SpdySettingsIds id, 743 void AddSetting(SpdySettingsIds id,
751 bool persist_value, 744 bool persist_value,
752 bool persisted, 745 bool persisted,
753 int32 value) { 746 int32 value) {
754 values_[id].persist_value = persist_value; 747 values_[id].persist_value = persist_value;
755 values_[id].persisted = persisted; 748 values_[id].persisted = persisted;
756 values_[id].value = value; 749 values_[id].value = value;
757 } 750 }
758 751
759 bool clear_settings() const { return clear_settings_; } 752 bool clear_settings() const { return clear_settings_; }
760 void set_clear_settings(bool clear_settings) { 753 void set_clear_settings(bool clear_settings) {
761 clear_settings_ = clear_settings; 754 clear_settings_ = clear_settings;
762 } 755 }
763 bool is_ack() const { return is_ack_; } 756 bool is_ack() const { return is_ack_; }
764 void set_is_ack(bool is_ack) { 757 void set_is_ack(bool is_ack) { is_ack_ = is_ack; }
765 is_ack_ = is_ack;
766 }
767 758
768 virtual void Visit(SpdyFrameVisitor* visitor) const OVERRIDE; 759 virtual void Visit(SpdyFrameVisitor* visitor) const OVERRIDE;
769 760
770 private: 761 private:
771 ValueMap values_; 762 ValueMap values_;
772 bool clear_settings_; 763 bool clear_settings_;
773 bool is_ack_; 764 bool is_ack_;
774 765
775 DISALLOW_COPY_AND_ASSIGN(SpdySettingsIR); 766 DISALLOW_COPY_AND_ASSIGN(SpdySettingsIR);
776 }; 767 };
(...skipping 11 matching lines...) Expand all
788 779
789 private: 780 private:
790 SpdyPingId id_; 781 SpdyPingId id_;
791 bool is_ack_; 782 bool is_ack_;
792 783
793 DISALLOW_COPY_AND_ASSIGN(SpdyPingIR); 784 DISALLOW_COPY_AND_ASSIGN(SpdyPingIR);
794 }; 785 };
795 786
796 class NET_EXPORT_PRIVATE SpdyGoAwayIR : public SpdyFrameIR { 787 class NET_EXPORT_PRIVATE SpdyGoAwayIR : public SpdyFrameIR {
797 public: 788 public:
798 SpdyGoAwayIR(SpdyStreamId last_good_stream_id, SpdyGoAwayStatus status, 789 SpdyGoAwayIR(SpdyStreamId last_good_stream_id,
790 SpdyGoAwayStatus status,
799 const base::StringPiece& description); 791 const base::StringPiece& description);
800 virtual ~SpdyGoAwayIR(); 792 virtual ~SpdyGoAwayIR();
801 SpdyStreamId last_good_stream_id() const { return last_good_stream_id_; } 793 SpdyStreamId last_good_stream_id() const { return last_good_stream_id_; }
802 void set_last_good_stream_id(SpdyStreamId last_good_stream_id) { 794 void set_last_good_stream_id(SpdyStreamId last_good_stream_id) {
803 DCHECK_LE(0u, last_good_stream_id); 795 DCHECK_LE(0u, last_good_stream_id);
804 DCHECK_EQ(0u, last_good_stream_id & ~kStreamIdMask); 796 DCHECK_EQ(0u, last_good_stream_id & ~kStreamIdMask);
805 last_good_stream_id_ = last_good_stream_id; 797 last_good_stream_id_ = last_good_stream_id;
806 } 798 }
807 SpdyGoAwayStatus status() const { return status_; } 799 SpdyGoAwayStatus status() const { return status_; }
808 void set_status(SpdyGoAwayStatus status) { 800 void set_status(SpdyGoAwayStatus status) {
809 // TODO(hkhalil): Check valid ranges of status? 801 // TODO(hkhalil): Check valid ranges of status?
810 status_ = status; 802 status_ = status;
811 } 803 }
812 804
813 const base::StringPiece& description() const; 805 const base::StringPiece& description() const;
814 806
815 virtual void Visit(SpdyFrameVisitor* visitor) const OVERRIDE; 807 virtual void Visit(SpdyFrameVisitor* visitor) const OVERRIDE;
816 808
817 private: 809 private:
818 SpdyStreamId last_good_stream_id_; 810 SpdyStreamId last_good_stream_id_;
819 SpdyGoAwayStatus status_; 811 SpdyGoAwayStatus status_;
820 const base::StringPiece description_; 812 const base::StringPiece description_;
821 813
822 DISALLOW_COPY_AND_ASSIGN(SpdyGoAwayIR); 814 DISALLOW_COPY_AND_ASSIGN(SpdyGoAwayIR);
823 }; 815 };
824 816
825 class NET_EXPORT_PRIVATE SpdyHeadersIR : public SpdyFrameWithNameValueBlockIR { 817 class NET_EXPORT_PRIVATE SpdyHeadersIR : public SpdyFrameWithNameValueBlockIR {
826 public: 818 public:
827 explicit SpdyHeadersIR(SpdyStreamId stream_id) 819 explicit SpdyHeadersIR(SpdyStreamId stream_id)
828 : SpdyFrameWithNameValueBlockIR(stream_id), 820 : SpdyFrameWithNameValueBlockIR(stream_id),
829 end_headers_(true), 821 end_headers_(true),
830 has_priority_(false), 822 has_priority_(false),
831 priority_(0) {} 823 priority_(0) {}
832 824
833 virtual void Visit(SpdyFrameVisitor* visitor) const OVERRIDE; 825 virtual void Visit(SpdyFrameVisitor* visitor) const OVERRIDE;
834 826
835 bool end_headers() const { return end_headers_; } 827 bool end_headers() const { return end_headers_; }
836 void set_end_headers(bool end_headers) {end_headers_ = end_headers;} 828 void set_end_headers(bool end_headers) { end_headers_ = end_headers; }
837 bool has_priority() const { return has_priority_; } 829 bool has_priority() const { return has_priority_; }
838 void set_has_priority(bool has_priority) { has_priority_ = has_priority; } 830 void set_has_priority(bool has_priority) { has_priority_ = has_priority; }
839 uint32 priority() const { return priority_; } 831 uint32 priority() const { return priority_; }
840 void set_priority(SpdyPriority priority) { priority_ = priority; } 832 void set_priority(SpdyPriority priority) { priority_ = priority; }
841 833
842 private: 834 private:
843 bool end_headers_; 835 bool end_headers_;
844 bool has_priority_; 836 bool has_priority_;
845 // 31-bit priority. 837 // 31-bit priority.
846 uint32 priority_; 838 uint32 priority_;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
901 bool end_push_promise_; 893 bool end_push_promise_;
902 DISALLOW_COPY_AND_ASSIGN(SpdyPushPromiseIR); 894 DISALLOW_COPY_AND_ASSIGN(SpdyPushPromiseIR);
903 }; 895 };
904 896
905 // TODO(jgraettinger): This representation needs review. SpdyContinuationIR 897 // TODO(jgraettinger): This representation needs review. SpdyContinuationIR
906 // needs to frame a portion of a single, arbitrarily-broken encoded buffer. 898 // needs to frame a portion of a single, arbitrarily-broken encoded buffer.
907 class NET_EXPORT_PRIVATE SpdyContinuationIR 899 class NET_EXPORT_PRIVATE SpdyContinuationIR
908 : public SpdyFrameWithNameValueBlockIR { 900 : public SpdyFrameWithNameValueBlockIR {
909 public: 901 public:
910 explicit SpdyContinuationIR(SpdyStreamId stream_id) 902 explicit SpdyContinuationIR(SpdyStreamId stream_id)
911 : SpdyFrameWithNameValueBlockIR(stream_id), 903 : SpdyFrameWithNameValueBlockIR(stream_id), end_headers_(false) {}
912 end_headers_(false) {}
913 904
914 virtual void Visit(SpdyFrameVisitor* visitor) const OVERRIDE; 905 virtual void Visit(SpdyFrameVisitor* visitor) const OVERRIDE;
915 906
916 bool end_headers() const { return end_headers_; } 907 bool end_headers() const { return end_headers_; }
917 void set_end_headers(bool end_headers) {end_headers_ = end_headers;} 908 void set_end_headers(bool end_headers) { end_headers_ = end_headers; }
918 909
919 private: 910 private:
920 bool end_headers_; 911 bool end_headers_;
921 DISALLOW_COPY_AND_ASSIGN(SpdyContinuationIR); 912 DISALLOW_COPY_AND_ASSIGN(SpdyContinuationIR);
922 }; 913 };
923 914
924 // ------------------------------------------------------------------------- 915 // -------------------------------------------------------------------------
925 // Wrapper classes for various SPDY frames. 916 // Wrapper classes for various SPDY frames.
926 917
927 // All Spdy Frame types derive from this SpdyFrame class. 918 // All Spdy Frame types derive from this SpdyFrame class.
928 class SpdyFrame { 919 class SpdyFrame {
929 public: 920 public:
930 // Create a SpdyFrame using a pre-created buffer. 921 // Create a SpdyFrame using a pre-created buffer.
931 // If |owns_buffer| is true, this class takes ownership of the buffer 922 // If |owns_buffer| is true, this class takes ownership of the buffer
932 // and will delete it on cleanup. The buffer must have been created using 923 // and will delete it on cleanup. The buffer must have been created using
933 // new char[]. 924 // new char[].
934 // If |owns_buffer| is false, the caller retains ownership of the buffer and 925 // If |owns_buffer| is false, the caller retains ownership of the buffer and
935 // is responsible for making sure the buffer outlives this frame. In other 926 // is responsible for making sure the buffer outlives this frame. In other
936 // words, this class does NOT create a copy of the buffer. 927 // words, this class does NOT create a copy of the buffer.
937 SpdyFrame(char* data, size_t size, bool owns_buffer) 928 SpdyFrame(char* data, size_t size, bool owns_buffer)
938 : frame_(data), 929 : frame_(data), size_(size), owns_buffer_(owns_buffer) {
939 size_(size),
940 owns_buffer_(owns_buffer) {
941 DCHECK(frame_); 930 DCHECK(frame_);
942 } 931 }
943 932
944 ~SpdyFrame() { 933 ~SpdyFrame() {
945 if (owns_buffer_) { 934 if (owns_buffer_) {
946 delete [] frame_; 935 delete[] frame_;
947 } 936 }
948 frame_ = NULL; 937 frame_ = NULL;
949 } 938 }
950 939
951 // Provides access to the frame bytes, which is a buffer containing 940 // Provides access to the frame bytes, which is a buffer containing
952 // the frame packed as expected for sending over the wire. 941 // the frame packed as expected for sending over the wire.
953 char* data() const { return frame_; } 942 char* data() const { return frame_; }
954 943
955 // Returns the actual size of the underlying buffer. 944 // Returns the actual size of the underlying buffer.
956 size_t size() const { return size_; } 945 size_t size() const { return size_; }
(...skipping 30 matching lines...) Expand all
987 SpdyFrameVisitor() {} 976 SpdyFrameVisitor() {}
988 virtual ~SpdyFrameVisitor() {} 977 virtual ~SpdyFrameVisitor() {}
989 978
990 private: 979 private:
991 DISALLOW_COPY_AND_ASSIGN(SpdyFrameVisitor); 980 DISALLOW_COPY_AND_ASSIGN(SpdyFrameVisitor);
992 }; 981 };
993 982
994 } // namespace net 983 } // namespace net
995 984
996 #endif // NET_SPDY_SPDY_PROTOCOL_H_ 985 #endif // NET_SPDY_SPDY_PROTOCOL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698