Index: webrtc/pc/channel.cc |
diff --git a/webrtc/pc/channel.cc b/webrtc/pc/channel.cc |
index 8e916f12793802f245313b3c088050b128961cdc..1b31836db3b01314ca387a592525ae847a1c6d95 100644 |
--- a/webrtc/pc/channel.cc |
+++ b/webrtc/pc/channel.cc |
@@ -19,6 +19,7 @@ |
#include "webrtc/base/copyonwritebuffer.h" |
#include "webrtc/base/dscp.h" |
#include "webrtc/base/logging.h" |
+#include "webrtc/base/networkroute.h" |
#include "webrtc/base/trace_event.h" |
#include "webrtc/media/base/mediaconstants.h" |
#include "webrtc/media/base/rtputils.h" |
@@ -346,6 +347,8 @@ void BaseChannel::ConnectToTransportChannel(TransportChannel* tc) { |
tc->SignalReadPacket.connect(this, &BaseChannel::OnChannelRead); |
tc->SignalReadyToSend.connect(this, &BaseChannel::OnReadyToSend); |
tc->SignalDtlsState.connect(this, &BaseChannel::OnDtlsState); |
+ tc->SignalBestConnectionChanged.connect( |
+ this, &BaseChannel::OnBestConnectionChanged); |
} |
void BaseChannel::DisconnectFromTransportChannel(TransportChannel* tc) { |
@@ -504,6 +507,19 @@ void BaseChannel::OnDtlsState(TransportChannel* channel, |
} |
} |
+void BaseChannel::OnBestConnectionChanged(TransportChannel* channel, |
+ Connection* best_connection) { |
+ ASSERT(channel == transport_channel_ || channel == rtcp_transport_channel_); |
+ NetworkRoute network_route; |
+ if (best_connection) { |
+ network_route = |
+ NetworkRoute(best_connection->local_candidate().network_id(), |
+ best_connection->remote_candidate().network_id()); |
+ } |
+ media_channel()->OnNetworkRouteChanged(channel->transport_name(), |
+ network_route); |
+} |
+ |
void BaseChannel::SetReadyToSend(bool rtcp, bool ready) { |
if (rtcp) { |
rtcp_ready_to_send_ = ready; |