From 133c0524f3ba70829a5eb1a93540d16fecc5e1a3 Mon Sep 17 00:00:00 2001 From: Harald Alvestrand Date: Fri, 29 Jan 2021 14:27:12 +0000 Subject: [PATCH] Make the config_ member of JsepTransportController const This makes the config_ member thread-safe. Required breaking out active_reset_srtp_params as a new member variable, guarded by the network thread. Bug: none Change-Id: I81d542744116e5355c53695ea5531735587ba438 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/204200 Commit-Queue: Harald Alvestrand Reviewed-by: Mirko Bonadei Cr-Commit-Position: refs/heads/master@{#33103} --- pc/jsep_transport_controller.cc | 12 ++++++------ pc/jsep_transport_controller.h | 5 ++++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/pc/jsep_transport_controller.cc b/pc/jsep_transport_controller.cc index 9ab8fb9962..7e5f893ff3 100644 --- a/pc/jsep_transport_controller.cc +++ b/pc/jsep_transport_controller.cc @@ -82,7 +82,8 @@ JsepTransportController::JsepTransportController( network_thread_(network_thread), port_allocator_(port_allocator), async_resolver_factory_(async_resolver_factory), - config_(config) { + config_(config), + active_reset_srtp_params_(config.active_reset_srtp_params) { // The |transport_observer| is assumed to be non-null. RTC_DCHECK(config_.transport_observer); RTC_DCHECK(config_.rtcp_handler); @@ -395,11 +396,11 @@ void JsepTransportController::SetActiveResetSrtpParams( }); return; } - + RTC_DCHECK_RUN_ON(network_thread_); RTC_LOG(INFO) << "Updating the active_reset_srtp_params for JsepTransportController: " << active_reset_srtp_params; - config_.active_reset_srtp_params = active_reset_srtp_params; + active_reset_srtp_params_ = active_reset_srtp_params; for (auto& kv : jsep_transports_by_name_) { kv.second->SetActiveResetSrtpParams(active_reset_srtp_params); } @@ -525,7 +526,7 @@ JsepTransportController::CreateDtlsSrtpTransport( const std::string& transport_name, cricket::DtlsTransportInternal* rtp_dtls_transport, cricket::DtlsTransportInternal* rtcp_dtls_transport) { - RTC_DCHECK(network_thread_->IsCurrent()); + RTC_DCHECK_RUN_ON(network_thread_); auto dtls_srtp_transport = std::make_unique( rtcp_dtls_transport == nullptr); if (config_.enable_external_auth) { @@ -534,8 +535,7 @@ JsepTransportController::CreateDtlsSrtpTransport( dtls_srtp_transport->SetDtlsTransports(rtp_dtls_transport, rtcp_dtls_transport); - dtls_srtp_transport->SetActiveResetSrtpParams( - config_.active_reset_srtp_params); + dtls_srtp_transport->SetActiveResetSrtpParams(active_reset_srtp_params_); dtls_srtp_transport->SignalDtlsStateChange.connect( this, &JsepTransportController::UpdateAggregateStates_n); return dtls_srtp_transport; diff --git a/pc/jsep_transport_controller.h b/pc/jsep_transport_controller.h index 2f9d8a0a93..ced780433a 100644 --- a/pc/jsep_transport_controller.h +++ b/pc/jsep_transport_controller.h @@ -98,6 +98,8 @@ class JsepTransportController : public sigslot::has_slots<> { std::function rtcp_handler; + // Initial value for whether DtlsTransport reset causes a reset + // of SRTP parameters. bool active_reset_srtp_params = false; RtcEventLog* event_log = nullptr; @@ -441,7 +443,8 @@ class JsepTransportController : public sigslot::has_slots<> { PeerConnectionInterface::PeerConnectionState::kNew; cricket::IceGatheringState ice_gathering_state_ = cricket::kIceGatheringNew; - Config config_; + const Config config_; + bool active_reset_srtp_params_ RTC_GUARDED_BY(network_thread_); const cricket::SessionDescription* local_desc_ = nullptr; const cricket::SessionDescription* remote_desc_ = nullptr;