| Index: net/spdy/spdy_session_pool.cc
|
| diff --git a/net/spdy/spdy_session_pool.cc b/net/spdy/spdy_session_pool.cc
|
| index 72beec465db4a1e2e110f2e34d98423375a10d0c..10bd52ff566a2c9506efbbe8a8ea674f21b114b8 100644
|
| --- a/net/spdy/spdy_session_pool.cc
|
| +++ b/net/spdy/spdy_session_pool.cc
|
| @@ -278,7 +278,24 @@ base::Value* SpdySessionPool::SpdySessionPoolInfoToValue() const {
|
| }
|
|
|
| void SpdySessionPool::OnIPAddressChanged() {
|
| - CloseCurrentSessions(ERR_NETWORK_CHANGED);
|
| + WeakSessionList current_sessions = GetCurrentSessions();
|
| + for (WeakSessionList::const_iterator it = current_sessions.begin();
|
| + it != current_sessions.end(); ++it) {
|
| + if (!*it)
|
| + continue;
|
| +
|
| + // For OSs that terminate TCP connections upon relevant network changes
|
| + // there is no need to explicitly close SpdySessions, instead simply mark
|
| + // the sessions as deprecated so they aren't reused.
|
| +#if defined(OS_ANDROID) || defined(OS_WIN) || defined(OS_IOS)
|
| + (*it)->MakeUnavailable();
|
| +#else
|
| + (*it)->CloseSessionOnError(ERR_NETWORK_CHANGED,
|
| + "Closing current sessions.");
|
| + DCHECK(!*it);
|
| +#endif // defined(OS_ANDROID) || defined(OS_WIN) || defined(OS_IOS)
|
| + DCHECK(!IsSessionAvailable(*it));
|
| + }
|
| http_server_properties_->ClearAllSpdySettings();
|
| }
|
|
|
|
|