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

Unified Diff: net/quic/quic_chromium_client_stream.cc

Issue 1961573002: Avoids the "re-encode HPACK as SPDY3" step. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Avoids the "re-encode HPACK as SPDY3" step. 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 side-by-side diff with in-line comments
Download patch
Index: net/quic/quic_chromium_client_stream.cc
diff --git a/net/quic/quic_chromium_client_stream.cc b/net/quic/quic_chromium_client_stream.cc
index 1aa8e531fcfe01f530896168256a801ba5d84c30..cd883149a3263f4e2602e407f7983ba309764294 100644
--- a/net/quic/quic_chromium_client_stream.cc
+++ b/net/quic/quic_chromium_client_stream.cc
@@ -14,6 +14,7 @@
#include "net/quic/quic_spdy_session.h"
#include "net/quic/quic_write_blocked_list.h"
#include "net/quic/spdy_utils.h"
+#include "net/spdy/header_coalescer.h"
namespace net {
@@ -60,6 +61,28 @@ void QuicChromiumClientStream::OnStreamHeadersComplete(bool fin,
}
}
+void QuicChromiumClientStream::OnStreamHeaderList(
+ bool fin,
+ size_t frame_len,
+ const QuicHeaderList& header_list) {
+ QuicSpdyStream::OnStreamHeaderList(fin, frame_len, header_list);
+
+ if (headers_delivered_) {
+ // The delegate will read the trailers via a posted task.
+ NotifyDelegateOfHeadersCompleteLater(received_trailers(), frame_len);
+ } else {
+ HeaderCoalescer coalescer;
+ for (const auto& header : header_list) {
+ coalescer.OnHeader(header.first, header.second);
+ }
+ ConsumeHeaderList();
+ session_->OnInitialHeadersComplete(id(), coalescer.headers());
+
+ // The delegate will read the headers via a posted task.
+ NotifyDelegateOfHeadersCompleteLater(coalescer.headers(), frame_len);
+ }
+}
+
void QuicChromiumClientStream::OnPromiseHeadersComplete(
QuicStreamId promised_id,
size_t frame_len) {
@@ -222,6 +245,7 @@ void QuicChromiumClientStream::NotifyDelegateOfHeadersComplete(
// Only mark trailers consumed when we are about to notify delegate.
if (headers_delivered_) {
MarkTrailersConsumed(decompressed_trailers().length());
+ MarkTrailersDelivered();
net_log_.AddEvent(
NetLog::TYPE_QUIC_CHROMIUM_CLIENT_STREAM_READ_RESPONSE_TRAILERS,
base::Bind(&SpdyHeaderBlockNetLogCallback, &headers));

Powered by Google App Engine
This is Rietveld 408576698