Index: webrtc/pc/channel.cc |
diff --git a/webrtc/pc/channel.cc b/webrtc/pc/channel.cc |
index 8e916f12793802f245313b3c088050b128961cdc..25ba2c0586ccf1020e0ad4bf03743e28721c9f4d 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->SignalSelectedCandidatePairChanged.connect( |
+ this, &BaseChannel::OnSelectedCandidatePairChanged); |
} |
void BaseChannel::DisconnectFromTransportChannel(TransportChannel* tc) { |
@@ -504,6 +507,20 @@ void BaseChannel::OnDtlsState(TransportChannel* channel, |
} |
} |
+void BaseChannel::OnSelectedCandidatePairChanged( |
+ TransportChannel* channel, |
+ CandidatePairInterface* selected_candidate_pair) { |
+ ASSERT(channel == transport_channel_ || channel == rtcp_transport_channel_); |
+ NetworkRoute network_route; |
+ if (selected_candidate_pair) { |
+ network_route = |
+ NetworkRoute(selected_candidate_pair->local_candidate().network_id(), |
+ selected_candidate_pair->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; |