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

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

Issue 304353012: Introduce STATE_RESERVED_REMOTE. No behavioral changes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix review remarks Created 6 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 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/spdy/spdy_session.h" 5 #include "net/spdy/spdy_session.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <map> 8 #include <map>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 case RST_STREAM_CONNECT_ERROR: 333 case RST_STREAM_CONNECT_ERROR:
334 return STATUS_CODE_CONNECT_ERROR; 334 return STATUS_CODE_CONNECT_ERROR;
335 case RST_STREAM_ENHANCE_YOUR_CALM: 335 case RST_STREAM_ENHANCE_YOUR_CALM:
336 return STATUS_CODE_ENHANCE_YOUR_CALM; 336 return STATUS_CODE_ENHANCE_YOUR_CALM;
337 default: 337 default:
338 NOTREACHED(); 338 NOTREACHED();
339 return static_cast<SpdyProtocolErrorDetails>(-1); 339 return static_cast<SpdyProtocolErrorDetails>(-1);
340 } 340 }
341 } 341 }
342 342
343 void SplitPushedHeadersToRequestAndResponse(const SpdyHeaderBlock& headers,
344 SpdyMajorVersion protocol_version,
345 SpdyHeaderBlock* request_headers,
346 SpdyHeaderBlock* response_headers) {
347 DCHECK(response_headers);
348 DCHECK(request_headers);
349 for (SpdyHeaderBlock::const_iterator it = headers.begin();
350 it != headers.end();
351 ++it) {
352 SpdyHeaderBlock* to_insert = response_headers;
353 if (protocol_version == SPDY2) {
354 if (it->first == "url")
355 to_insert = request_headers;
356 } else {
357 const char* host = protocol_version >= SPDY4 ? ":authority" : ":host";
358 static const char* scheme = ":scheme";
359 static const char* path = ":path";
360 if (it->first == host || it->first == scheme || it->first == path)
361 to_insert = request_headers;
362 }
363 to_insert->insert(*it);
364 }
365 }
366
343 SpdyStreamRequest::SpdyStreamRequest() : weak_ptr_factory_(this) { 367 SpdyStreamRequest::SpdyStreamRequest() : weak_ptr_factory_(this) {
344 Reset(); 368 Reset();
345 } 369 }
346 370
347 SpdyStreamRequest::~SpdyStreamRequest() { 371 SpdyStreamRequest::~SpdyStreamRequest() {
348 CancelRequest(); 372 CancelRequest();
349 } 373 }
350 374
351 int SpdyStreamRequest::StartRequest( 375 int SpdyStreamRequest::StartRequest(
352 SpdyStreamType type, 376 SpdyStreamType type,
(...skipping 1766 matching lines...) Expand 10 before | Expand all | Expand 10 after
2119 2143
2120 InsertActivatedStream(stream.Pass()); 2144 InsertActivatedStream(stream.Pass());
2121 2145
2122 ActiveStreamMap::iterator active_it = active_streams_.find(stream_id); 2146 ActiveStreamMap::iterator active_it = active_streams_.find(stream_id);
2123 if (active_it == active_streams_.end()) { 2147 if (active_it == active_streams_.end()) {
2124 NOTREACHED(); 2148 NOTREACHED();
2125 return; 2149 return;
2126 } 2150 }
2127 2151
2128 // Parse the headers. 2152 // Parse the headers.
2129 if (OnInitialResponseHeadersReceived( 2153
2130 headers, response_time, 2154 // Split headers to simulate push promise and response.
2131 recv_first_byte_time, active_it->second.stream) != OK) 2155 SpdyHeaderBlock request_headers;
2156 SpdyHeaderBlock response_headers;
2157 SplitPushedHeadersToRequestAndResponse(
2158 headers, GetProtocolVersion(), &request_headers, &response_headers);
2159
2160 if (active_it->second.stream->OnPushPromiseHeadersReceived(request_headers) !=
2161 OK)
2162 return;
2163
2164 if (OnInitialResponseHeadersReceived(response_headers,
2165 response_time,
2166 recv_first_byte_time,
2167 active_it->second.stream) != OK)
2132 return; 2168 return;
2133 2169
2134 base::StatsCounter push_requests("spdy.pushed_streams"); 2170 base::StatsCounter push_requests("spdy.pushed_streams");
2135 push_requests.Increment(); 2171 push_requests.Increment();
2136 } 2172 }
2137 2173
2138 void SpdySession::DeleteExpiredPushedStreams() { 2174 void SpdySession::DeleteExpiredPushedStreams() {
2139 if (unclaimed_pushed_streams_.empty()) 2175 if (unclaimed_pushed_streams_.empty())
2140 return; 2176 return;
2141 2177
(...skipping 802 matching lines...) Expand 10 before | Expand all | Expand 10 after
2944 if (!queue->empty()) { 2980 if (!queue->empty()) {
2945 SpdyStreamId stream_id = queue->front(); 2981 SpdyStreamId stream_id = queue->front();
2946 queue->pop_front(); 2982 queue->pop_front();
2947 return stream_id; 2983 return stream_id;
2948 } 2984 }
2949 } 2985 }
2950 return 0; 2986 return 0;
2951 } 2987 }
2952 2988
2953 } // namespace net 2989 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698