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

Unified Diff: net/spdy/spdy_session.cc

Issue 17382012: [SPDY] Refactor SpdyStream's handling of response headers (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Forgot to rename a function Created 7 years, 6 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/spdy/spdy_session.cc
diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc
index 9b10d2afc45b5d624a3e6e9253b5b4ed4c22775a..56c4fde12715692496bb1cf3af02789a9c0a69b1 100644
--- a/net/spdy/spdy_session.cc
+++ b/net/spdy/spdy_session.cc
@@ -1599,11 +1599,15 @@ void SpdySession::OnSynStreamCompressed(
}
-bool SpdySession::Respond(const SpdyHeaderBlock& headers, SpdyStream* stream) {
+bool SpdySession::Respond(const SpdyHeaderBlock& response_headers,
+ base::Time response_time,
+ base::TimeTicks recv_first_byte_time,
+ SpdyStream* stream) {
int rv = OK;
SpdyStreamId stream_id = stream->stream_id();
// May invalidate |stream|.
- rv = stream->OnResponseHeadersReceived(headers);
+ rv = stream->OnInitialResponseHeadersReceived(
+ response_headers, response_time, recv_first_byte_time);
if (rv < 0) {
DCHECK_NE(rv, ERR_IO_PENDING);
CloseActiveStream(stream_id, rv);
@@ -1619,6 +1623,9 @@ void SpdySession::OnSynStream(SpdyStreamId stream_id,
bool fin,
bool unidirectional,
const SpdyHeaderBlock& headers) {
+ base::Time response_time = base::Time::Now();
+ base::TimeTicks recv_first_byte_time = base::TimeTicks::Now();
+
if (net_log_.IsLoggingAllEvents()) {
net_log_.AddEvent(
NetLog::TYPE_SPDY_SESSION_PUSHED_SYN_STREAM,
@@ -1715,7 +1722,6 @@ void SpdySession::OnSynStream(SpdyStreamId stream_id,
unclaimed_pushed_streams_[url] =
std::pair<SpdyStream*, base::TimeTicks>(stream.get(), time_func_());
- stream->set_response_received();
InsertActivatedStream(stream.Pass());
ActiveStreamMap::iterator it = active_streams_.find(stream_id);
@@ -1725,7 +1731,7 @@ void SpdySession::OnSynStream(SpdyStreamId stream_id,
}
// Parse the headers.
- if (!Respond(headers, it->second))
+ if (!Respond(headers, response_time, recv_first_byte_time, it->second))
return;
base::StatsCounter push_requests("spdy.pushed_streams");
@@ -1768,6 +1774,9 @@ void SpdySession::DeleteExpiredPushedStreams() {
void SpdySession::OnSynReply(SpdyStreamId stream_id,
bool fin,
const SpdyHeaderBlock& headers) {
+ base::Time response_time = base::Time::Now();
+ base::TimeTicks recv_first_byte_time = base::TimeTicks::Now();
+
if (net_log().IsLoggingAllEvents()) {
net_log().AddEvent(
NetLog::TYPE_SPDY_SESSION_SYN_REPLY,
@@ -1785,16 +1794,15 @@ void SpdySession::OnSynReply(SpdyStreamId stream_id,
SpdyStream* stream = it->second;
CHECK_EQ(stream->stream_id(), stream_id);
- if (stream->response_received()) {
+ if (stream->ReceivedInitialResponseHeaders()) {
stream->LogStreamError(ERR_SYN_REPLY_NOT_RECEIVED,
"Received duplicate SYN_REPLY for stream.");
RecordProtocolErrorHistogram(PROTOCOL_ERROR_SYN_REPLY_NOT_RECEIVED);
CloseActiveStream(stream->stream_id(), ERR_SPDY_PROTOCOL_ERROR);
return;
}
- stream->set_response_received();
- Respond(headers, stream);
+ Respond(headers, response_time, recv_first_byte_time, stream);
}
void SpdySession::OnHeaders(SpdyStreamId stream_id,
@@ -1817,7 +1825,7 @@ void SpdySession::OnHeaders(SpdyStreamId stream_id,
CHECK_EQ(it->second->stream_id(), stream_id);
- int rv = it->second->OnHeaders(headers);
+ int rv = it->second->OnAdditionalResponseHeadersReceived(headers);
if (rv < 0) {
DCHECK_NE(rv, ERR_IO_PENDING);
CloseActiveStream(stream_id, rv);

Powered by Google App Engine
This is Rietveld 408576698