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

Side by Side Diff: net/spdy/spdy_headers_block_parser.cc

Issue 822713002: Update from https://crrev.com/309415 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 12 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #include "net/spdy/spdy_headers_block_parser.h" 5 #include "net/spdy/spdy_headers_block_parser.h"
6 6
7 #include "base/sys_byteorder.h" 7 #include "base/sys_byteorder.h"
8 8
9 namespace net { 9 namespace net {
10 10
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 return; 149 return;
150 } 150 }
151 // Convert from network to host order and return the parsed out integer. 151 // Convert from network to host order and return the parsed out integer.
152 if (length_field_size_ == sizeof(uint32_t)) { 152 if (length_field_size_ == sizeof(uint32_t)) {
153 *parsed_length = ntohl(*reinterpret_cast<const uint32_t *>(buffer)); 153 *parsed_length = ntohl(*reinterpret_cast<const uint32_t *>(buffer));
154 } else { 154 } else {
155 *parsed_length = ntohs(*reinterpret_cast<const uint16_t *>(buffer)); 155 *parsed_length = ntohs(*reinterpret_cast<const uint16_t *>(buffer));
156 } 156 }
157 } 157 }
158 158
159 void SpdyHeadersBlockParser::Reset() {
160 {
161 SpdyPinnableBufferPiece empty;
162 headers_block_prefix_.Swap(&empty);
163 }
164 {
165 SpdyPinnableBufferPiece empty;
166 key_.Swap(&empty);
167 }
168 error_ = OK;
169 state_ = READING_HEADER_BLOCK_LEN;
170 stream_id_ = 0;
171 total_bytes_received_ = 0;
172 }
173
174 size_t SpdyHeadersBlockParser::LengthFieldSizeForVersion( 159 size_t SpdyHeadersBlockParser::LengthFieldSizeForVersion(
175 SpdyMajorVersion spdy_version) { 160 SpdyMajorVersion spdy_version) {
176 if (spdy_version < SPDY3) { 161 if (spdy_version < SPDY3) {
177 return sizeof(uint16_t); 162 return sizeof(uint16_t);
178 } 163 }
179 return sizeof(uint32_t); 164 return sizeof(uint32_t);
180 } 165 }
181 166
182 size_t SpdyHeadersBlockParser::MaxNumberOfHeadersForVersion( 167 size_t SpdyHeadersBlockParser::MaxNumberOfHeadersForVersion(
183 SpdyMajorVersion spdy_version) { 168 SpdyMajorVersion spdy_version) {
184 // Account for the length of the header block field. 169 // Account for the length of the header block field.
185 size_t max_bytes_for_headers = 170 size_t max_bytes_for_headers =
186 kMaximumFieldLength - LengthFieldSizeForVersion(spdy_version); 171 kMaximumFieldLength - LengthFieldSizeForVersion(spdy_version);
187 172
188 // A minimal size header is twice the length field size (and has a 173 // A minimal size header is twice the length field size (and has a
189 // zero-lengthed key and a zero-lengthed value). 174 // zero-lengthed key and a zero-lengthed value).
190 return max_bytes_for_headers / (2 * LengthFieldSizeForVersion(spdy_version)); 175 return max_bytes_for_headers / (2 * LengthFieldSizeForVersion(spdy_version));
191 } 176 }
192 177
193 } // namespace net 178 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698