Fix an assert failure caused by race condition
BUG=
R=pbos@webrtc.org, pthatcher@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/36579004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7938 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/p2p/base/turnport.cc b/webrtc/p2p/base/turnport.cc
index a22b465..e564db3 100644
--- a/webrtc/p2p/base/turnport.cc
+++ b/webrtc/p2p/base/turnport.cc
@@ -442,7 +442,17 @@
const rtc::SocketAddress& remote_addr,
const rtc::PacketTime& packet_time) {
ASSERT(socket == socket_);
- ASSERT(remote_addr == server_address_.address);
+
+ // This is to guard against a STUN response from previous server after
+ // alternative server redirection. TODO(guoweis): add a unit test for this
+ // race condition.
+ if (remote_addr != server_address_.address) {
+ LOG_J(LS_WARNING, this) << "Discarding TURN message from unknown address:"
+ << remote_addr.ToString()
+ << ", server_address_:"
+ << server_address_.address.ToString();
+ return;
+ }
// The message must be at least the size of a channel header.
if (size < TURN_CHANNEL_HEADER_SIZE) {