| Index: net/spdy/spdy_session.cc
|
| diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc
|
| index 217a7a75372ab0aae76470c8e1439f299cdef85a..00fde399101aa028968d215f6e32e5b085953857 100644
|
| --- a/net/spdy/spdy_session.cc
|
| +++ b/net/spdy/spdy_session.cc
|
| @@ -61,22 +61,6 @@ const int kHungIntervalSeconds = 10;
|
| // Minimum seconds that unclaimed pushed streams will be kept in memory.
|
| const int kMinPushedStreamLifetimeSeconds = 300;
|
|
|
| -std::unique_ptr<base::Value> NetLogSpdySynStreamSentCallback(
|
| - const SpdyHeaderBlock* headers,
|
| - bool fin,
|
| - bool unidirectional,
|
| - SpdyPriority spdy_priority,
|
| - SpdyStreamId stream_id,
|
| - NetLogCaptureMode capture_mode) {
|
| - std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
|
| - dict->Set("headers", ElideSpdyHeaderBlockForNetLog(*headers, capture_mode));
|
| - dict->SetBoolean("fin", fin);
|
| - dict->SetBoolean("unidirectional", unidirectional);
|
| - dict->SetInteger("priority", static_cast<int>(spdy_priority));
|
| - dict->SetInteger("stream_id", stream_id);
|
| - return std::move(dict);
|
| -}
|
| -
|
| std::unique_ptr<base::Value> NetLogSpdyHeadersSentCallback(
|
| const SpdyHeaderBlock* headers,
|
| bool fin,
|
| @@ -99,24 +83,6 @@ std::unique_ptr<base::Value> NetLogSpdyHeadersSentCallback(
|
| return std::move(dict);
|
| }
|
|
|
| -std::unique_ptr<base::Value> NetLogSpdySynStreamReceivedCallback(
|
| - const SpdyHeaderBlock* headers,
|
| - bool fin,
|
| - bool unidirectional,
|
| - SpdyPriority spdy_priority,
|
| - SpdyStreamId stream_id,
|
| - SpdyStreamId associated_stream,
|
| - NetLogCaptureMode capture_mode) {
|
| - std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
|
| - dict->Set("headers", ElideSpdyHeaderBlockForNetLog(*headers, capture_mode));
|
| - dict->SetBoolean("fin", fin);
|
| - dict->SetBoolean("unidirectional", unidirectional);
|
| - dict->SetInteger("priority", static_cast<int>(spdy_priority));
|
| - dict->SetInteger("stream_id", stream_id);
|
| - dict->SetInteger("associated_stream", associated_stream);
|
| - return std::move(dict);
|
| -}
|
| -
|
| std::unique_ptr<base::Value> NetLogSpdySynReplyOrHeadersReceivedCallback(
|
| const SpdyHeaderBlock* headers,
|
| bool fin,
|
| @@ -150,14 +116,12 @@ std::unique_ptr<base::Value> NetLogSpdySessionCallback(
|
|
|
| std::unique_ptr<base::Value> NetLogSpdyInitializedCallback(
|
| NetLog::Source source,
|
| - const NextProto protocol_version,
|
| NetLogCaptureMode /* capture_mode */) {
|
| std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
|
| if (source.IsValid()) {
|
| source.AddToEventParameters(dict.get());
|
| }
|
| - dict->SetString("protocol",
|
| - SSLClientSocket::NextProtoToString(protocol_version));
|
| + dict->SetString("protocol", SSLClientSocket::NextProtoToString(kProtoHTTP2));
|
| return std::move(dict);
|
| }
|
|
|
| @@ -173,13 +137,11 @@ std::unique_ptr<base::Value> NetLogSpdySettingsCallback(
|
|
|
| std::unique_ptr<base::Value> NetLogSpdySettingCallback(
|
| SpdySettingsIds id,
|
| - const SpdyMajorVersion protocol_version,
|
| SpdySettingsFlags flags,
|
| uint32_t value,
|
| NetLogCaptureMode /* capture_mode */) {
|
| std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
|
| - dict->SetInteger("id",
|
| - SpdyConstants::SerializeSettingId(protocol_version, id));
|
| + dict->SetInteger("id", SpdyConstants::SerializeSettingId(HTTP2, id));
|
| dict->SetInteger("flags", flags);
|
| dict->SetInteger("value", value);
|
| return std::move(dict);
|
| @@ -187,7 +149,6 @@ std::unique_ptr<base::Value> NetLogSpdySettingCallback(
|
|
|
| std::unique_ptr<base::Value> NetLogSpdySendSettingsCallback(
|
| const SettingsMap* settings,
|
| - const SpdyMajorVersion protocol_version,
|
| NetLogCaptureMode /* capture_mode */) {
|
| std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
|
| std::unique_ptr<base::ListValue> settings_list(new base::ListValue());
|
| @@ -198,7 +159,7 @@ std::unique_ptr<base::Value> NetLogSpdySendSettingsCallback(
|
| const uint32_t value = it->second.second;
|
| settings_list->AppendString(base::StringPrintf(
|
| "[id:%u flags:%u value:%u]",
|
| - SpdyConstants::SerializeSettingId(protocol_version, id), flags, value));
|
| + SpdyConstants::SerializeSettingId(HTTP2, id), flags, value));
|
| }
|
| dict->Set("settings", std::move(settings_list));
|
| return std::move(dict);
|
| @@ -472,26 +433,6 @@ SpdyGoAwayStatus MapNetErrorToGoAwayStatus(Error err) {
|
| }
|
| }
|
|
|
| -void SplitPushedHeadersToRequestAndResponse(const SpdyHeaderBlock& headers,
|
| - SpdyMajorVersion protocol_version,
|
| - SpdyHeaderBlock* request_headers,
|
| - SpdyHeaderBlock* response_headers) {
|
| - DCHECK(response_headers);
|
| - DCHECK(request_headers);
|
| - for (SpdyHeaderBlock::const_iterator it = headers.begin();
|
| - it != headers.end();
|
| - ++it) {
|
| - SpdyHeaderBlock* to_insert = response_headers;
|
| - const char* host = protocol_version >= HTTP2 ? ":authority" : ":host";
|
| - static const char scheme[] = ":scheme";
|
| - static const char path[] = ":path";
|
| - if (it->first == host || it->first == scheme || it->first == path) {
|
| - to_insert = request_headers;
|
| - }
|
| - to_insert->insert(*it);
|
| - }
|
| -}
|
| -
|
| SpdyStreamRequest::SpdyStreamRequest() : weak_ptr_factory_(this) {
|
| Reset();
|
| }
|
| @@ -687,7 +628,6 @@ SpdySession::SpdySession(const SpdySessionKey& spdy_session_key,
|
| bool enable_sending_initial_data,
|
| bool enable_ping_based_connection_checking,
|
| bool enable_priority_dependencies,
|
| - NextProto default_protocol,
|
| size_t session_max_recv_window_size,
|
| size_t stream_max_recv_window_size,
|
| TimeFunc time_func,
|
| @@ -727,20 +667,17 @@ SpdySession::SpdySession(const SpdySessionKey& spdy_session_key,
|
| last_activity_time_(time_func()),
|
| last_compressed_frame_len_(0),
|
| check_ping_status_pending_(false),
|
| - send_connection_header_prefix_(false),
|
| session_send_window_size_(0),
|
| session_max_recv_window_size_(session_max_recv_window_size),
|
| session_recv_window_size_(0),
|
| session_unacked_recv_window_bytes_(0),
|
| - stream_initial_send_window_size_(
|
| - GetDefaultInitialWindowSize(default_protocol)),
|
| + stream_initial_send_window_size_(kDefaultInitialWindowSize),
|
| stream_max_recv_window_size_(stream_max_recv_window_size),
|
| net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_HTTP2_SESSION)),
|
| verify_domain_authentication_(verify_domain_authentication),
|
| enable_sending_initial_data_(enable_sending_initial_data),
|
| enable_ping_based_connection_checking_(
|
| enable_ping_based_connection_checking),
|
| - protocol_(default_protocol),
|
| connection_at_risk_of_loss_time_(
|
| base::TimeDelta::FromSeconds(kDefaultConnectionAtRiskOfLossSeconds)),
|
| hung_interval_(base::TimeDelta::FromSeconds(kHungIntervalSeconds)),
|
| @@ -748,8 +685,6 @@ SpdySession::SpdySession(const SpdySessionKey& spdy_session_key,
|
| time_func_(time_func),
|
| priority_dependencies_enabled_(enable_priority_dependencies),
|
| weak_factory_(this) {
|
| - DCHECK_GE(protocol_, kProtoSPDYMinimumVersion);
|
| - DCHECK_LE(protocol_, kProtoSPDYMaximumVersion);
|
| DCHECK(HttpStreamFactory::spdy_enabled());
|
| net_log_.BeginEvent(
|
| NetLog::TYPE_HTTP2_SESSION,
|
| @@ -795,33 +730,16 @@ void SpdySession::InitializeWithSocket(
|
| is_secure_ = is_secure;
|
| certificate_error_code_ = certificate_error_code;
|
|
|
| - NextProto protocol_negotiated =
|
| - connection_->socket()->GetNegotiatedProtocol();
|
| - if (protocol_negotiated != kProtoUnknown) {
|
| - protocol_ = protocol_negotiated;
|
| - stream_initial_send_window_size_ = GetDefaultInitialWindowSize(protocol_);
|
| - }
|
| - DCHECK_GE(protocol_, kProtoSPDYMinimumVersion);
|
| - DCHECK_LE(protocol_, kProtoSPDYMaximumVersion);
|
| + session_send_window_size_ = kDefaultInitialWindowSize;
|
| + session_recv_window_size_ = kDefaultInitialWindowSize;
|
|
|
| - if (protocol_ == kProtoHTTP2)
|
| - send_connection_header_prefix_ = true;
|
| -
|
| - session_send_window_size_ = GetDefaultInitialWindowSize(protocol_);
|
| - session_recv_window_size_ = GetDefaultInitialWindowSize(protocol_);
|
| -
|
| - buffered_spdy_framer_.reset(
|
| - new BufferedSpdyFramer(NextProtoToSpdyMajorVersion(protocol_)));
|
| + buffered_spdy_framer_.reset(new BufferedSpdyFramer());
|
| buffered_spdy_framer_->set_visitor(this);
|
| buffered_spdy_framer_->set_debug_visitor(this);
|
| - UMA_HISTOGRAM_ENUMERATION(
|
| - "Net.SpdyVersion3", protocol_ - kProtoSPDYHistogramOffset,
|
| - kProtoSPDYMaximumVersion - kProtoSPDYHistogramOffset + 1);
|
|
|
| - net_log_.AddEvent(
|
| - NetLog::TYPE_HTTP2_SESSION_INITIALIZED,
|
| - base::Bind(&NetLogSpdyInitializedCallback,
|
| - connection_->socket()->NetLog().source(), protocol_));
|
| + net_log_.AddEvent(NetLog::TYPE_HTTP2_SESSION_INITIALIZED,
|
| + base::Bind(&NetLogSpdyInitializedCallback,
|
| + connection_->socket()->NetLog().source()));
|
|
|
| DCHECK_EQ(availability_state_, STATE_AVAILABLE);
|
| connection_->AddHigherLayeredPool(this);
|
| @@ -1034,22 +952,12 @@ void SpdySession::AddPooledAlias(const SpdySessionKey& alias_key) {
|
| pooled_aliases_.insert(alias_key);
|
| }
|
|
|
| -SpdyMajorVersion SpdySession::GetProtocolVersion() const {
|
| - DCHECK(buffered_spdy_framer_.get());
|
| - return buffered_spdy_framer_->protocol_version();
|
| -}
|
| -
|
| bool SpdySession::HasAcceptableTransportSecurity() const {
|
| // If we're not even using TLS, we have no standards to meet.
|
| if (!is_secure_) {
|
| return true;
|
| }
|
|
|
| - // We don't enforce transport security standards for older SPDY versions.
|
| - if (GetProtocolVersion() < HTTP2) {
|
| - return true;
|
| - }
|
| -
|
| SSLInfo ssl_info;
|
| CHECK(connection_->socket()->GetSSLInfo(&ssl_info));
|
|
|
| @@ -1103,56 +1011,36 @@ std::unique_ptr<SpdySerializedFrame> SpdySession::CreateSynStream(
|
| SendPrefacePingIfNoneInFlight();
|
|
|
| DCHECK(buffered_spdy_framer_.get());
|
| - SpdyPriority spdy_priority =
|
| - ConvertRequestPriorityToSpdyPriority(priority, GetProtocolVersion());
|
| + SpdyPriority spdy_priority = ConvertRequestPriorityToSpdyPriority(priority);
|
|
|
| std::unique_ptr<SpdySerializedFrame> syn_frame;
|
| - if (GetProtocolVersion() <= SPDY3) {
|
| - if (net_log().IsCapturing()) {
|
| - net_log().AddEvent(NetLog::TYPE_HTTP2_SESSION_SYN_STREAM,
|
| - base::Bind(&NetLogSpdySynStreamSentCallback, &block,
|
| - (flags & CONTROL_FLAG_FIN) != 0,
|
| - (flags & CONTROL_FLAG_UNIDIRECTIONAL) != 0,
|
| - spdy_priority, stream_id));
|
| - }
|
| -
|
| - SpdySynStreamIR syn_stream(stream_id, std::move(block));
|
| - syn_stream.set_associated_to_stream_id(0);
|
| - syn_stream.set_priority(spdy_priority);
|
| - syn_stream.set_fin((flags & CONTROL_FLAG_FIN) != 0);
|
| - syn_stream.set_unidirectional((flags & CONTROL_FLAG_UNIDIRECTIONAL) != 0);
|
| - syn_frame.reset(new SpdySerializedFrame(
|
| - buffered_spdy_framer_->SerializeFrame(syn_stream)));
|
| + bool has_priority = true;
|
| + int weight = Spdy3PriorityToHttp2Weight(spdy_priority);
|
| + SpdyStreamId dependent_stream_id = 0;
|
| + bool exclusive = false;
|
|
|
| - } else {
|
| - bool has_priority = true;
|
| - int weight = Spdy3PriorityToHttp2Weight(spdy_priority);
|
| - SpdyStreamId dependent_stream_id = 0;
|
| - bool exclusive = false;
|
| -
|
| - if (priority_dependencies_enabled_) {
|
| - priority_dependency_state_.OnStreamSynSent(
|
| - stream_id, spdy_priority, &dependent_stream_id, &exclusive);
|
| - }
|
| -
|
| - if (net_log().IsCapturing()) {
|
| - net_log().AddEvent(
|
| - NetLog::TYPE_HTTP2_SESSION_SEND_HEADERS,
|
| - base::Bind(&NetLogSpdyHeadersSentCallback, &block,
|
| - (flags & CONTROL_FLAG_FIN) != 0, stream_id, has_priority,
|
| - weight, dependent_stream_id, exclusive));
|
| - }
|
| + if (priority_dependencies_enabled_) {
|
| + priority_dependency_state_.OnStreamSynSent(
|
| + stream_id, spdy_priority, &dependent_stream_id, &exclusive);
|
| + }
|
|
|
| - SpdyHeadersIR headers(stream_id, std::move(block));
|
| - headers.set_has_priority(has_priority);
|
| - headers.set_weight(weight);
|
| - headers.set_parent_stream_id(dependent_stream_id);
|
| - headers.set_exclusive(exclusive);
|
| - headers.set_fin((flags & CONTROL_FLAG_FIN) != 0);
|
| - syn_frame.reset(new SpdySerializedFrame(
|
| - buffered_spdy_framer_->SerializeFrame(headers)));
|
| + if (net_log().IsCapturing()) {
|
| + net_log().AddEvent(
|
| + NetLog::TYPE_HTTP2_SESSION_SEND_HEADERS,
|
| + base::Bind(&NetLogSpdyHeadersSentCallback, &block,
|
| + (flags & CONTROL_FLAG_FIN) != 0, stream_id, has_priority,
|
| + weight, dependent_stream_id, exclusive));
|
| }
|
|
|
| + SpdyHeadersIR headers(stream_id, std::move(block));
|
| + headers.set_has_priority(has_priority);
|
| + headers.set_weight(weight);
|
| + headers.set_parent_stream_id(dependent_stream_id);
|
| + headers.set_exclusive(exclusive);
|
| + headers.set_fin((flags & CONTROL_FLAG_FIN) != 0);
|
| + syn_frame.reset(
|
| + new SpdySerializedFrame(buffered_spdy_framer_->SerializeFrame(headers)));
|
| +
|
| streams_initiated_count_++;
|
|
|
| return syn_frame;
|
| @@ -2226,15 +2114,13 @@ void SpdySession::OnSettings(bool clear_persisted) {
|
| clear_persisted));
|
| }
|
|
|
| - if (GetProtocolVersion() >= HTTP2) {
|
| - // Send an acknowledgment of the setting.
|
| - SpdySettingsIR settings_ir;
|
| - settings_ir.set_is_ack(true);
|
| - EnqueueSessionWrite(
|
| - HIGHEST, SETTINGS,
|
| - std::unique_ptr<SpdySerializedFrame>(new SpdySerializedFrame(
|
| - buffered_spdy_framer_->SerializeFrame(settings_ir))));
|
| - }
|
| + // Send an acknowledgment of the setting.
|
| + SpdySettingsIR settings_ir;
|
| + settings_ir.set_is_ack(true);
|
| + EnqueueSessionWrite(
|
| + HIGHEST, SETTINGS,
|
| + std::unique_ptr<SpdySerializedFrame>(new SpdySerializedFrame(
|
| + buffered_spdy_framer_->SerializeFrame(settings_ir))));
|
| }
|
|
|
| void SpdySession::OnSetting(SpdySettingsIds id, uint8_t flags, uint32_t value) {
|
| @@ -2246,9 +2132,8 @@ void SpdySession::OnSetting(SpdySettingsIds id, uint8_t flags, uint32_t value) {
|
| received_settings_ = true;
|
|
|
| // Log the setting.
|
| - const SpdyMajorVersion protocol_version = GetProtocolVersion();
|
| net_log_.AddEvent(NetLog::TYPE_HTTP2_SESSION_RECV_SETTING,
|
| - base::Bind(&NetLogSpdySettingCallback, id, protocol_version,
|
| + base::Bind(&NetLogSpdySettingCallback, id,
|
| static_cast<SpdySettingsFlags>(flags), value));
|
| }
|
|
|
| @@ -2314,47 +2199,6 @@ int SpdySession::OnInitialResponseHeadersReceived(
|
| return rv;
|
| }
|
|
|
| -void SpdySession::OnSynStream(SpdyStreamId stream_id,
|
| - SpdyStreamId associated_stream_id,
|
| - SpdyPriority priority,
|
| - bool fin,
|
| - bool unidirectional,
|
| - const SpdyHeaderBlock& headers) {
|
| - CHECK(in_io_loop_);
|
| -
|
| - DCHECK_LE(GetProtocolVersion(), SPDY3);
|
| -
|
| - base::Time response_time = base::Time::Now();
|
| - base::TimeTicks recv_first_byte_time = time_func_();
|
| -
|
| - if (net_log_.IsCapturing()) {
|
| - net_log_.AddEvent(
|
| - NetLog::TYPE_HTTP2_SESSION_PUSHED_SYN_STREAM,
|
| - base::Bind(&NetLogSpdySynStreamReceivedCallback, &headers, fin,
|
| - unidirectional, priority, stream_id, associated_stream_id));
|
| - }
|
| -
|
| - // Split headers to simulate push promise and response.
|
| - SpdyHeaderBlock request_headers;
|
| - SpdyHeaderBlock response_headers;
|
| - SplitPushedHeadersToRequestAndResponse(
|
| - headers, GetProtocolVersion(), &request_headers, &response_headers);
|
| -
|
| - if (!TryCreatePushStream(
|
| - stream_id, associated_stream_id, priority, request_headers))
|
| - return;
|
| -
|
| - ActiveStreamMap::iterator active_it = active_streams_.find(stream_id);
|
| - if (active_it == active_streams_.end()) {
|
| - NOTREACHED();
|
| - return;
|
| - }
|
| -
|
| - OnInitialResponseHeadersReceived(response_headers, response_time,
|
| - recv_first_byte_time,
|
| - active_it->second.stream);
|
| -}
|
| -
|
| void SpdySession::DeleteExpiredPushedStreams() {
|
| if (unclaimed_pushed_streams_.empty())
|
| return;
|
| @@ -2392,51 +2236,6 @@ void SpdySession::DeleteExpiredPushedStreams() {
|
| base::TimeDelta::FromSeconds(kMinPushedStreamLifetimeSeconds);
|
| }
|
|
|
| -void SpdySession::OnSynReply(SpdyStreamId stream_id,
|
| - bool fin,
|
| - const SpdyHeaderBlock& headers) {
|
| - CHECK(in_io_loop_);
|
| -
|
| - base::Time response_time = base::Time::Now();
|
| - base::TimeTicks recv_first_byte_time = time_func_();
|
| -
|
| - if (net_log().IsCapturing()) {
|
| - net_log().AddEvent(NetLog::TYPE_HTTP2_SESSION_SYN_REPLY,
|
| - base::Bind(&NetLogSpdySynReplyOrHeadersReceivedCallback,
|
| - &headers, fin, stream_id));
|
| - }
|
| -
|
| - ActiveStreamMap::iterator it = active_streams_.find(stream_id);
|
| - if (it == active_streams_.end()) {
|
| - // NOTE: it may just be that the stream was cancelled.
|
| - return;
|
| - }
|
| -
|
| - SpdyStream* stream = it->second.stream;
|
| - CHECK_EQ(stream->stream_id(), stream_id);
|
| -
|
| - stream->AddRawReceivedBytes(last_compressed_frame_len_);
|
| - last_compressed_frame_len_ = 0;
|
| -
|
| - if (GetProtocolVersion() >= HTTP2) {
|
| - const std::string& error = "HTTP/2 wasn't expecting SYN_REPLY.";
|
| - stream->LogStreamError(ERR_SPDY_PROTOCOL_ERROR, error);
|
| - ResetStreamIterator(it, RST_STREAM_PROTOCOL_ERROR, error);
|
| - return;
|
| - }
|
| - if (!it->second.waiting_for_syn_reply) {
|
| - const std::string& error =
|
| - "Received duplicate SYN_REPLY for stream.";
|
| - stream->LogStreamError(ERR_SPDY_PROTOCOL_ERROR, error);
|
| - ResetStreamIterator(it, RST_STREAM_PROTOCOL_ERROR, error);
|
| - return;
|
| - }
|
| - it->second.waiting_for_syn_reply = false;
|
| -
|
| - ignore_result(OnInitialResponseHeadersReceived(
|
| - headers, response_time, recv_first_byte_time, stream));
|
| -}
|
| -
|
| void SpdySession::OnHeaders(SpdyStreamId stream_id,
|
| bool has_priority,
|
| int weight,
|
| @@ -2469,14 +2268,6 @@ void SpdySession::OnHeaders(SpdyStreamId stream_id,
|
| base::TimeTicks recv_first_byte_time = time_func_();
|
|
|
| if (it->second.waiting_for_syn_reply) {
|
| - if (GetProtocolVersion() < HTTP2) {
|
| - const std::string& error =
|
| - "Was expecting SYN_REPLY, not HEADERS.";
|
| - stream->LogStreamError(ERR_SPDY_PROTOCOL_ERROR, error);
|
| - ResetStreamIterator(it, RST_STREAM_PROTOCOL_ERROR, error);
|
| - return;
|
| - }
|
| -
|
| it->second.waiting_for_syn_reply = false;
|
| ignore_result(OnInitialResponseHeadersReceived(
|
| headers, response_time, recv_first_byte_time, stream));
|
| @@ -2634,8 +2425,7 @@ void SpdySession::OnPing(SpdyPingId unique_id, bool is_ack) {
|
| base::Bind(&NetLogSpdyPingCallback, unique_id, is_ack, "received"));
|
|
|
| // Send response to a PING from server.
|
| - if ((protocol_ == kProtoHTTP2 && !is_ack) ||
|
| - (protocol_ < kProtoHTTP2 && unique_id % 2 == 0)) {
|
| + if (!is_ack) {
|
| WritePingFrame(unique_id, true);
|
| return;
|
| }
|
| @@ -2731,9 +2521,8 @@ bool SpdySession::TryCreatePushStream(SpdyStreamId stream_id,
|
| }
|
|
|
| if (IsStreamActive(stream_id)) {
|
| - // For SPDY3 and higher we should not get here, we'll start going away
|
| - // earlier on |last_seen_push_stream_id_| check.
|
| - CHECK_GT(SPDY3, GetProtocolVersion());
|
| + // We should not get here, we'll start going away earlier on
|
| + // |last_seen_push_stream_id_| check.
|
| LOG(WARNING) << "Received push for active stream " << stream_id;
|
| return false;
|
| }
|
| @@ -2741,7 +2530,7 @@ bool SpdySession::TryCreatePushStream(SpdyStreamId stream_id,
|
| last_accepted_push_stream_id_ = stream_id;
|
|
|
| RequestPriority request_priority =
|
| - ConvertSpdyPriorityToRequestPriority(priority, GetProtocolVersion());
|
| + ConvertSpdyPriorityToRequestPriority(priority);
|
|
|
| if (availability_state_ == STATE_GOING_AWAY) {
|
| // TODO(akalin): This behavior isn't in the SPDY spec, although it
|
| @@ -2756,7 +2545,6 @@ bool SpdySession::TryCreatePushStream(SpdyStreamId stream_id,
|
| if (associated_stream_id == 0) {
|
| // In HTTP/2 0 stream id in PUSH_PROMISE frame leads to framer error and
|
| // session going away. We should never get here.
|
| - CHECK_GT(HTTP2, GetProtocolVersion());
|
| std::string description = base::StringPrintf(
|
| "Received invalid associated stream id %d for pushed stream %d",
|
| associated_stream_id,
|
| @@ -2771,7 +2559,7 @@ bool SpdySession::TryCreatePushStream(SpdyStreamId stream_id,
|
| // TODO(mbelshe): DCHECK that this is a GET method?
|
|
|
| // Verify that the response had a URL for us.
|
| - GURL gurl = GetUrlFromHeaderBlock(headers, GetProtocolVersion());
|
| + GURL gurl = GetUrlFromHeaderBlock(headers);
|
| if (!gurl.is_valid()) {
|
| EnqueueResetStreamFrame(stream_id,
|
| request_priority,
|
| @@ -2860,7 +2648,7 @@ bool SpdySession::TryCreatePushStream(SpdyStreamId stream_id,
|
| stream->set_stream_id(stream_id);
|
|
|
| // In spdy4/http2 PUSH_PROMISE arrives on associated stream.
|
| - if (associated_it != active_streams_.end() && GetProtocolVersion() >= HTTP2) {
|
| + if (associated_it != active_streams_.end()) {
|
| associated_it->second.stream->AddRawReceivedBytes(
|
| last_compressed_frame_len_);
|
| } else {
|
| @@ -2918,16 +2706,13 @@ void SpdySession::SendStreamWindowUpdate(SpdyStreamId stream_id,
|
| void SpdySession::SendInitialData() {
|
| DCHECK(enable_sending_initial_data_);
|
|
|
| - if (send_connection_header_prefix_) {
|
| - DCHECK_EQ(protocol_, kProtoHTTP2);
|
| - std::unique_ptr<SpdySerializedFrame> connection_header_prefix_frame(
|
| - new SpdySerializedFrame(const_cast<char*>(kHttp2ConnectionHeaderPrefix),
|
| - kHttp2ConnectionHeaderPrefixSize,
|
| - false /* take_ownership */));
|
| - // Count the prefix as part of the subsequent SETTINGS frame.
|
| - EnqueueSessionWrite(HIGHEST, SETTINGS,
|
| - std::move(connection_header_prefix_frame));
|
| - }
|
| + std::unique_ptr<SpdySerializedFrame> connection_header_prefix_frame(
|
| + new SpdySerializedFrame(const_cast<char*>(kHttp2ConnectionHeaderPrefix),
|
| + kHttp2ConnectionHeaderPrefixSize,
|
| + false /* take_ownership */));
|
| + // Count the prefix as part of the subsequent SETTINGS frame.
|
| + EnqueueSessionWrite(HIGHEST, SETTINGS,
|
| + std::move(connection_header_prefix_frame));
|
|
|
| // First, notify the server about the settings they should use when
|
| // communicating with us.
|
| @@ -2936,7 +2721,7 @@ void SpdySession::SendInitialData() {
|
| // max concurrent streams and initial window size.
|
| settings_map[SETTINGS_MAX_CONCURRENT_STREAMS] =
|
| SettingsFlagsAndValue(SETTINGS_FLAG_NONE, kMaxConcurrentPushedStreams);
|
| - if (stream_max_recv_window_size_ != GetDefaultInitialWindowSize(protocol_)) {
|
| + if (stream_max_recv_window_size_ != kDefaultInitialWindowSize) {
|
| settings_map[SETTINGS_INITIAL_WINDOW_SIZE] =
|
| SettingsFlagsAndValue(SETTINGS_FLAG_NONE, stream_max_recv_window_size_);
|
| }
|
| @@ -2954,38 +2739,11 @@ void SpdySession::SendInitialData() {
|
| IncreaseRecvWindowSize(session_max_recv_window_size_ -
|
| session_recv_window_size_);
|
| }
|
| -
|
| - if (protocol_ == kProtoSPDY31) {
|
| - // Finally, notify the server about the settings they have
|
| - // previously told us to use when communicating with them (after
|
| - // applying them).
|
| - const SettingsMap& server_settings_map =
|
| - http_server_properties_->GetSpdySettings(GetServer());
|
| - if (server_settings_map.empty())
|
| - return;
|
| -
|
| - SettingsMap::const_iterator it =
|
| - server_settings_map.find(SETTINGS_CURRENT_CWND);
|
| - uint32_t cwnd = (it != server_settings_map.end()) ? it->second.second : 0;
|
| - UMA_HISTOGRAM_CUSTOM_COUNTS("Net.SpdySettingsCwndSent", cwnd, 1, 200, 100);
|
| -
|
| - for (SettingsMap::const_iterator it = server_settings_map.begin();
|
| - it != server_settings_map.end(); ++it) {
|
| - const SpdySettingsIds new_id = it->first;
|
| - const uint32_t new_val = it->second.second;
|
| - HandleSetting(new_id, new_val);
|
| - }
|
| -
|
| - SendSettings(server_settings_map);
|
| - }
|
| }
|
|
|
| -
|
| void SpdySession::SendSettings(const SettingsMap& settings) {
|
| - const SpdyMajorVersion protocol_version = GetProtocolVersion();
|
| - net_log_.AddEvent(
|
| - NetLog::TYPE_HTTP2_SESSION_SEND_SETTINGS,
|
| - base::Bind(&NetLogSpdySendSettingsCallback, &settings, protocol_version));
|
| + net_log_.AddEvent(NetLog::TYPE_HTTP2_SESSION_SEND_SETTINGS,
|
| + base::Bind(&NetLogSpdySendSettingsCallback, &settings));
|
| // Create the SETTINGS frame and send it.
|
| DCHECK(buffered_spdy_framer_.get());
|
| std::unique_ptr<SpdySerializedFrame> settings_frame(
|
|
|