| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/memory/linked_ptr.h" | 9 #include "base/memory/linked_ptr.h" |
| 10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 // static | 230 // static |
| 231 size_t SpdySession::max_concurrent_stream_limit_ = 256; | 231 size_t SpdySession::max_concurrent_stream_limit_ = 256; |
| 232 | 232 |
| 233 // static | 233 // static |
| 234 bool SpdySession::enable_ping_based_connection_checking_ = true; | 234 bool SpdySession::enable_ping_based_connection_checking_ = true; |
| 235 | 235 |
| 236 // static | 236 // static |
| 237 int SpdySession::connection_at_risk_of_loss_ms_ = 0; | 237 int SpdySession::connection_at_risk_of_loss_ms_ = 0; |
| 238 | 238 |
| 239 // static | 239 // static |
| 240 int SpdySession::trailing_ping_delay_time_ms_ = 200; | 240 int SpdySession::trailing_ping_delay_time_ms_ = 1000; |
| 241 | 241 |
| 242 // static | 242 // static |
| 243 int SpdySession::hung_interval_ms_ = 10000; | 243 int SpdySession::hung_interval_ms_ = 10000; |
| 244 | 244 |
| 245 SpdySession::SpdySession(const HostPortProxyPair& host_port_proxy_pair, | 245 SpdySession::SpdySession(const HostPortProxyPair& host_port_proxy_pair, |
| 246 SpdySessionPool* spdy_session_pool, | 246 SpdySessionPool* spdy_session_pool, |
| 247 SpdySettingsStorage* spdy_settings, | 247 SpdySettingsStorage* spdy_settings, |
| 248 bool verify_domain_authentication, | 248 bool verify_domain_authentication, |
| 249 NetLog* net_log) | 249 NetLog* net_log) |
| 250 : ALLOW_THIS_IN_INITIALIZER_LIST( | 250 : ALLOW_THIS_IN_INITIALIZER_LIST( |
| (...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 521 base::StatsCounter spdy_requests("spdy.requests"); | 521 base::StatsCounter spdy_requests("spdy.requests"); |
| 522 spdy_requests.Increment(); | 522 spdy_requests.Increment(); |
| 523 streams_initiated_count_++; | 523 streams_initiated_count_++; |
| 524 | 524 |
| 525 if (net_log().IsLoggingAllEvents()) { | 525 if (net_log().IsLoggingAllEvents()) { |
| 526 net_log().AddEvent( | 526 net_log().AddEvent( |
| 527 NetLog::TYPE_SPDY_SESSION_SYN_STREAM, | 527 NetLog::TYPE_SPDY_SESSION_SYN_STREAM, |
| 528 make_scoped_refptr( | 528 make_scoped_refptr( |
| 529 new NetLogSpdySynParameter(headers, flags, stream_id, 0))); | 529 new NetLogSpdySynParameter(headers, flags, stream_id, 0))); |
| 530 } | 530 } |
| 531 |
| 532 // Some servers don't like too many pings, so we limit our current sending to |
| 533 // no more than one ping for any syn sent. To do this, we avoid ever setting |
| 534 // this to true unless we send a syn (which we have just done). This approach |
| 535 // may change over time as servers change their responses to pings. |
| 531 need_to_send_ping_ = true; | 536 need_to_send_ping_ = true; |
| 532 | 537 |
| 533 return ERR_IO_PENDING; | 538 return ERR_IO_PENDING; |
| 534 } | 539 } |
| 535 | 540 |
| 536 int SpdySession::WriteStreamData(spdy::SpdyStreamId stream_id, | 541 int SpdySession::WriteStreamData(spdy::SpdyStreamId stream_id, |
| 537 net::IOBuffer* data, int len, | 542 net::IOBuffer* data, int len, |
| 538 spdy::SpdyDataFlags flags) { | 543 spdy::SpdyDataFlags flags) { |
| 539 // Find our stream | 544 // Find our stream |
| 540 DCHECK(IsStreamActive(stream_id)); | 545 DCHECK(IsStreamActive(stream_id)); |
| (...skipping 994 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1535 | 1540 |
| 1536 base::TimeTicks now = base::TimeTicks::Now(); | 1541 base::TimeTicks now = base::TimeTicks::Now(); |
| 1537 // If we haven't heard from server, then send a preface-PING. | 1542 // If we haven't heard from server, then send a preface-PING. |
| 1538 if ((now - received_data_time_) > kConnectionAtRiskOfLoss) | 1543 if ((now - received_data_time_) > kConnectionAtRiskOfLoss) |
| 1539 SendPrefacePing(); | 1544 SendPrefacePing(); |
| 1540 | 1545 |
| 1541 PlanToSendTrailingPing(); | 1546 PlanToSendTrailingPing(); |
| 1542 } | 1547 } |
| 1543 | 1548 |
| 1544 void SpdySession::SendPrefacePing() { | 1549 void SpdySession::SendPrefacePing() { |
| 1545 // TODO(rtenneti): Enable sending Preface-PING after server fix. | 1550 // TODO(rtenneti): Send preface pings when more servers support additional |
| 1551 // pings. |
| 1546 // WritePingFrame(next_ping_id_); | 1552 // WritePingFrame(next_ping_id_); |
| 1547 } | 1553 } |
| 1548 | 1554 |
| 1549 void SpdySession::PlanToSendTrailingPing() { | 1555 void SpdySession::PlanToSendTrailingPing() { |
| 1550 if (trailing_ping_pending_) | 1556 if (trailing_ping_pending_) |
| 1551 return; | 1557 return; |
| 1552 | 1558 |
| 1553 trailing_ping_pending_ = true; | 1559 trailing_ping_pending_ = true; |
| 1554 MessageLoop::current()->PostDelayedTask( | 1560 MessageLoop::current()->PostDelayedTask( |
| 1555 FROM_HERE, | 1561 FROM_HERE, |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1701 if (it == pending_callback_map_.end()) | 1707 if (it == pending_callback_map_.end()) |
| 1702 return; | 1708 return; |
| 1703 | 1709 |
| 1704 OldCompletionCallback* callback = it->second.callback; | 1710 OldCompletionCallback* callback = it->second.callback; |
| 1705 int result = it->second.result; | 1711 int result = it->second.result; |
| 1706 pending_callback_map_.erase(it); | 1712 pending_callback_map_.erase(it); |
| 1707 callback->Run(result); | 1713 callback->Run(result); |
| 1708 } | 1714 } |
| 1709 | 1715 |
| 1710 } // namespace net | 1716 } // namespace net |
| OLD | NEW |