Index: talk/app/webrtc/peerconnection.cc |
diff --git a/talk/app/webrtc/peerconnection.cc b/talk/app/webrtc/peerconnection.cc |
index 41df847cd68ddaa344c703def4549aa3ed81701d..7e689490b940dff8ae9b0dc6c206d2daba3a1619 100644 |
--- a/talk/app/webrtc/peerconnection.cc |
+++ b/talk/app/webrtc/peerconnection.cc |
@@ -868,6 +868,11 @@ void PeerConnection::OnRemoveLocalStream(MediaStreamInterface* stream) { |
void PeerConnection::OnIceConnectionChange( |
PeerConnectionInterface::IceConnectionState new_state) { |
ASSERT(signaling_thread()->IsCurrent()); |
+ // After transitioning to "closed", ignore any additional states from |
+ // WebRtcSession (such as "disconnected"). |
+ if (ice_connection_state_ == kIceConnectionClosed) { |
+ return; |
+ } |
ice_connection_state_ = new_state; |
observer_->OnIceConnectionChange(ice_connection_state_); |
} |