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 <hta@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33103}
diff --git a/pc/jsep_transport_controller.cc b/pc/jsep_transport_controller.cc
index 9ab8fb9..7e5f893 100644
--- a/pc/jsep_transport_controller.cc
+++ b/pc/jsep_transport_controller.cc
@@ -82,7 +82,8 @@
       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 @@
     });
     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 @@
     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<webrtc::DtlsSrtpTransport>(
       rtcp_dtls_transport == nullptr);
   if (config_.enable_external_auth) {
@@ -534,8 +535,7 @@
 
   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 2f9d8a0..ced7804 100644
--- a/pc/jsep_transport_controller.h
+++ b/pc/jsep_transport_controller.h
@@ -98,6 +98,8 @@
     std::function<void(const rtc::CopyOnWriteBuffer& packet,
                        int64_t packet_time_us)>
         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 @@
       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;