Index: webrtc/p2p/base/port.cc |
diff --git a/webrtc/p2p/base/port.cc b/webrtc/p2p/base/port.cc |
index 0add358ec91392917091e957dfc39d28224be5af..f73beda272716437aa69d5195cc81d84a084f20f 100644 |
--- a/webrtc/p2p/base/port.cc |
+++ b/webrtc/p2p/base/port.cc |
@@ -216,6 +216,16 @@ Port::~Port() { |
delete list[i]; |
} |
+Port::CloseAndSignalCandidateRemovals() { |
+ if (closed_) { |
+ return; |
+ } |
+ |
+ closed_ = true; |
+ SignalClosed(this); |
+ SignalCandidatesRemoved(this, candidates_); |
+} |
+ |
void Port::SetIceParameters(int component, |
const std::string& username_fragment, |
const std::string& password) { |
@@ -237,6 +247,12 @@ Connection* Port::GetConnection(const rtc::SocketAddress& remote_addr) { |
return NULL; |
} |
+void Port::FailAndDestroyConnections() { |
+ for (auto kv : connections_) { |
+ kv.second->FailAndDestroy(); |
+ } |
+} |
+ |
void Port::AddAddress(const rtc::SocketAddress& address, |
const rtc::SocketAddress& base_address, |
const rtc::SocketAddress& related_address, |
@@ -652,7 +668,7 @@ void Port::OnMessage(rtc::Message *pmsg) { |
void Port::OnNetworkInactive(const rtc::Network* network) { |
ASSERT(network == network_); |
- SignalNetworkInactive(this); |
+ CloseAndSignalCandidateRemovals(); |
} |
void Port::OnNetworkTypeChanged(const rtc::Network* network) { |