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

Unified Diff: net/quic/chromium/quic_http_stream.cc

Issue 2900533002: Add an async ReadTrailers method to QuicChromiumClientStream::Handle (Closed)
Patch Set: Fix comments Created 3 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
« no previous file with comments | « net/quic/chromium/quic_http_stream.h ('k') | net/quic/chromium/quic_http_stream_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/chromium/quic_http_stream.cc
diff --git a/net/quic/chromium/quic_http_stream.cc b/net/quic/chromium/quic_http_stream.cc
index a299a2612aa6daec72aac7236d9b044f7f5ac75e..c2caf5cb16e4a683c62e8053978d43601ba37af1 100644
--- a/net/quic/chromium/quic_http_stream.cc
+++ b/net/quic/chromium/quic_http_stream.cc
@@ -56,6 +56,7 @@ QuicHttpStream::QuicHttpStream(
has_response_status_(false),
response_status_(ERR_UNEXPECTED),
response_headers_received_(false),
+ trailing_headers_received_(false),
headers_bytes_received_(0),
headers_bytes_sent_(0),
closed_stream_received_bytes_(0),
@@ -464,10 +465,23 @@ void QuicHttpStream::OnReadResponseHeadersComplete(int rv) {
}
}
-void QuicHttpStream::OnTrailingHeadersAvailable(const SpdyHeaderBlock& headers,
- size_t frame_len) {
+void QuicHttpStream::ReadTrailingHeaders() {
+ if (!stream_)
+ return;
+
+ int rv = stream_->ReadTrailingHeaders(
+ &trailing_header_block_,
+ base::Bind(&QuicHttpStream::OnReadTrailingHeadersComplete,
+ weak_factory_.GetWeakPtr()));
+
+ if (rv != ERR_IO_PENDING)
+ OnReadTrailingHeadersComplete(rv);
+}
+
+void QuicHttpStream::OnReadTrailingHeadersComplete(int rv) {
DCHECK(response_headers_received_);
- headers_bytes_received_ += frame_len;
+ if (rv > 0)
+ headers_bytes_received_ += rv;
// QuicHttpStream ignores trailers.
if (stream_->IsDoneReading()) {
@@ -751,6 +765,11 @@ int QuicHttpStream::ProcessResponseHeaders(const SpdyHeaderBlock& headers) {
// Populate |connect_timing_| when response headers are received. This should
// take care of 0-RTT where request is sent before handshake is confirmed.
connect_timing_ = quic_session()->GetConnectTiming();
+
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE, base::Bind(&QuicHttpStream::ReadTrailingHeaders,
+ weak_factory_.GetWeakPtr()));
+
return OK;
}
« no previous file with comments | « net/quic/chromium/quic_http_stream.h ('k') | net/quic/chromium/quic_http_stream_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698