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

Side by Side Diff: net/quic/quic_chromium_client_stream.cc

Issue 1774703003: QuicChromiumClientStream should only do OnStream after notifying delegate about trailers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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 (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/quic/quic_chromium_client_stream.h" 5 #include "net/quic/quic_chromium_client_stream.h"
6 6
7 #include "base/callback_helpers.h" 7 #include "base/callback_helpers.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/thread_task_runner_handle.h" 9 #include "base/thread_task_runner_handle.h"
10 #include "net/base/io_buffer.h" 10 #include "net/base/io_buffer.h"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 } 51 }
52 if (!framer.ParseHeaderBlockInBuffer(header_data, headers_len, &headers)) { 52 if (!framer.ParseHeaderBlockInBuffer(header_data, headers_len, &headers)) {
53 DLOG(WARNING) << "Invalid headers"; 53 DLOG(WARNING) << "Invalid headers";
54 Reset(QUIC_BAD_APPLICATION_PAYLOAD); 54 Reset(QUIC_BAD_APPLICATION_PAYLOAD);
55 return; 55 return;
56 } 56 }
57 57
58 if (!headers_delivered_) { 58 if (!headers_delivered_) {
59 MarkHeadersConsumed(headers_len); 59 MarkHeadersConsumed(headers_len);
60 session_->OnInitialHeadersComplete(id(), headers); 60 session_->OnInitialHeadersComplete(id(), headers);
61 // The delegate will read the headers via a posted task.
62 NotifyDelegateOfHeadersCompleteLater(headers, frame_len);
61 } else { 63 } else {
62 MarkTrailersConsumed(headers_len); 64 MarkTrailersConsumed(headers_len);
65 NotifyDelegateOfHeadersCompleteLater(headers, frame_len);
66 OnStreamFrame(
67 QuicStreamFrame(id(), fin, stream_bytes_read(), StringPiece()));
63 } 68 }
64
65 // The delegate will read the headers via a posted task.
66 NotifyDelegateOfHeadersCompleteLater(headers, frame_len);
67 } 69 }
68 70
69 void QuicChromiumClientStream::OnPromiseHeadersComplete( 71 void QuicChromiumClientStream::OnPromiseHeadersComplete(
70 QuicStreamId promised_id, 72 QuicStreamId promised_id,
71 size_t frame_len) { 73 size_t frame_len) {
72 size_t headers_len = decompressed_headers().length(); 74 size_t headers_len = decompressed_headers().length();
73 SpdyHeaderBlock headers; 75 SpdyHeaderBlock headers;
74 SpdyFramer framer(HTTP2); 76 SpdyFramer framer(HTTP2);
75 if (!framer.ParseHeaderBlockInBuffer(decompressed_headers().data(), 77 if (!framer.ParseHeaderBlockInBuffer(decompressed_headers().data(),
76 headers_len, &headers)) { 78 headers_len, &headers)) {
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 213
212 void QuicChromiumClientStream::RunOrBuffer(base::Closure closure) { 214 void QuicChromiumClientStream::RunOrBuffer(base::Closure closure) {
213 if (delegate_) { 215 if (delegate_) {
214 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, closure); 216 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, closure);
215 } else { 217 } else {
216 delegate_tasks_.push_back(closure); 218 delegate_tasks_.push_back(closure);
217 } 219 }
218 } 220 }
219 221
220 } // namespace net 222 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | net/quic/quic_chromium_client_stream_test.cc » ('j') | net/quic/quic_spdy_stream.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698