diff options
Diffstat (limited to 'net/spdy/spdy_session.cc')
-rw-r--r-- | net/spdy/spdy_session.cc | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc index ddfa2a2..181d32f 100644 --- a/net/spdy/spdy_session.cc +++ b/net/spdy/spdy_session.cc @@ -394,6 +394,7 @@ net::Error SpdySession::InitializeWithSocket( state_ = CONNECTED; connection_.reset(connection); + connection_->AddLayeredPool(this); is_secure_ = is_secure; certificate_error_code_ = certificate_error_code; @@ -1191,6 +1192,18 @@ int SpdySession::GetLocalAddress(IPEndPoint* address) const { return connection_->socket()->GetLocalAddress(address); } +bool SpdySession::CloseOneIdleConnection() { + if (spdy_session_pool_ && num_active_streams() == 0) { + bool ret = HasOneRef(); + // Will remove a reference to this. + RemoveFromPool(); + // Since the underlying socket is only returned when |this| is destroyed + // we should only return true if RemoveFromPool() removed the last ref. + return ret; + } + return false; +} + void SpdySession::ActivateStream(SpdyStream* stream) { const spdy::SpdyStreamId id = stream->stream_id(); DCHECK(!IsStreamActive(id)); |