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

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

Issue 1997863002: Revert of Avoids the "re-encode HPACK as SPDY3" step. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
« no previous file with comments | « net/spdy/buffered_spdy_framer.h ('k') | net/spdy/buffered_spdy_framer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #include "net/spdy/buffered_spdy_framer.h" 5 #include "net/spdy/buffered_spdy_framer.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/strings/string_util.h"
9 8
10 namespace net { 9 namespace net {
11 10
12 namespace { 11 namespace {
13 12
14 // GOAWAY frame debug data is only buffered up to this many bytes. 13 // GOAWAY frame debug data is only buffered up to this many bytes.
15 size_t kGoAwayDebugDataMaxSize = 1024; 14 size_t kGoAwayDebugDataMaxSize = 1024;
16 15
17 // Initial and maximum sizes for header block buffer. 16 // Initial and maximum sizes for header block buffer.
18 size_t kHeaderBufferInitialSize = 8 * 1024; 17 size_t kHeaderBufferInitialSize = 8 * 1024;
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 void BufferedSpdyFramer::OnStreamEnd(SpdyStreamId stream_id) { 203 void BufferedSpdyFramer::OnStreamEnd(SpdyStreamId stream_id) {
205 visitor_->OnStreamEnd(stream_id); 204 visitor_->OnStreamEnd(stream_id);
206 } 205 }
207 206
208 void BufferedSpdyFramer::OnStreamPadding(SpdyStreamId stream_id, size_t len) { 207 void BufferedSpdyFramer::OnStreamPadding(SpdyStreamId stream_id, size_t len) {
209 visitor_->OnStreamPadding(stream_id, len); 208 visitor_->OnStreamPadding(stream_id, len);
210 } 209 }
211 210
212 SpdyHeadersHandlerInterface* BufferedSpdyFramer::OnHeaderFrameStart( 211 SpdyHeadersHandlerInterface* BufferedSpdyFramer::OnHeaderFrameStart(
213 SpdyStreamId stream_id) { 212 SpdyStreamId stream_id) {
214 coalescer_.reset(new HeaderCoalescer()); 213 return visitor_->OnHeaderFrameStart(stream_id);
215 return coalescer_.get();
216 } 214 }
217 215
218 void BufferedSpdyFramer::OnHeaderFrameEnd(SpdyStreamId stream_id, 216 void BufferedSpdyFramer::OnHeaderFrameEnd(SpdyStreamId stream_id,
219 bool end_headers) { 217 bool end_headers) {
220 if (coalescer_->error_seen()) { 218 visitor_->OnHeaderFrameEnd(stream_id, end_headers);
221 visitor_->OnStreamError(stream_id,
222 "Could not parse Spdy Control Frame Header.");
223 return;
224 }
225 DCHECK(control_frame_fields_.get());
226 switch (control_frame_fields_->type) {
227 case SYN_STREAM:
228 visitor_->OnSynStream(
229 control_frame_fields_->stream_id,
230 control_frame_fields_->associated_stream_id,
231 control_frame_fields_->priority, control_frame_fields_->fin,
232 control_frame_fields_->unidirectional, coalescer_->headers());
233 break;
234 case SYN_REPLY:
235 visitor_->OnSynReply(control_frame_fields_->stream_id,
236 control_frame_fields_->fin, coalescer_->headers());
237 break;
238 case HEADERS:
239 visitor_->OnHeaders(control_frame_fields_->stream_id,
240 control_frame_fields_->has_priority,
241 control_frame_fields_->priority,
242 control_frame_fields_->parent_stream_id,
243 control_frame_fields_->exclusive,
244 control_frame_fields_->fin, coalescer_->headers());
245 break;
246 case PUSH_PROMISE:
247 DCHECK_LT(SPDY3, protocol_version());
248 visitor_->OnPushPromise(control_frame_fields_->stream_id,
249 control_frame_fields_->promised_stream_id,
250 coalescer_->headers());
251 break;
252 default:
253 DCHECK(false) << "Unexpect control frame type: "
254 << control_frame_fields_->type;
255 break;
256 }
257 control_frame_fields_.reset(NULL);
258 } 219 }
259 220
260 void BufferedSpdyFramer::OnSettings(bool clear_persisted) { 221 void BufferedSpdyFramer::OnSettings(bool clear_persisted) {
261 visitor_->OnSettings(clear_persisted); 222 visitor_->OnSettings(clear_persisted);
262 } 223 }
263 224
264 void BufferedSpdyFramer::OnSetting(SpdySettingsIds id, 225 void BufferedSpdyFramer::OnSetting(SpdySettingsIds id,
265 uint8_t flags, 226 uint8_t flags,
266 uint32_t value) { 227 uint32_t value) {
267 visitor_->OnSetting(id, flags, value); 228 visitor_->OnSetting(id, flags, value);
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 } 449 }
489 450
490 void BufferedSpdyFramer::InitHeaderStreaming(SpdyStreamId stream_id) { 451 void BufferedSpdyFramer::InitHeaderStreaming(SpdyStreamId stream_id) {
491 header_buffer_.clear(); 452 header_buffer_.clear();
492 header_buffer_valid_ = true; 453 header_buffer_valid_ = true;
493 header_stream_id_ = stream_id; 454 header_stream_id_ = stream_id;
494 DCHECK_NE(header_stream_id_, SpdyFramer::kInvalidStream); 455 DCHECK_NE(header_stream_id_, SpdyFramer::kInvalidStream);
495 } 456 }
496 457
497 } // namespace net 458 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/buffered_spdy_framer.h ('k') | net/spdy/buffered_spdy_framer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698