From 26451933c1f41b4870d41ed92222cf3e726fb25f Mon Sep 17 00:00:00 2001 From: Harald Alvestrand Date: Thu, 21 Feb 2019 11:27:15 +0100 Subject: [PATCH] DtlsTransport::ice_transport is const and can be called off thread MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since the ice_transport element of DtlsTransport is never changed over the lifetime of the object, it's safe to return it on any thread. Added const qualifier to make this obvious. Bug: chromium:907849 Change-Id: Ib180682689a57df5106717b125c626d7ac9e7561 Reviewed-on: https://webrtc-review.googlesource.com/c/123781 Reviewed-by: Henrik Boström Commit-Queue: Harald Alvestrand Cr-Commit-Position: refs/heads/master@{#26800} --- pc/dtls_transport.cc | 8 +++----- pc/dtls_transport.h | 3 +-- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/pc/dtls_transport.cc b/pc/dtls_transport.cc index 66e2787e0c..38cef1e549 100644 --- a/pc/dtls_transport.cc +++ b/pc/dtls_transport.cc @@ -45,12 +45,12 @@ DtlsTransport::DtlsTransport( std::unique_ptr internal) : owner_thread_(rtc::Thread::Current()), info_(DtlsTransportState::kNew), - internal_dtls_transport_(std::move(internal)) { + internal_dtls_transport_(std::move(internal)), + ice_transport_(new rtc::RefCountedObject( + internal_dtls_transport_->ice_transport())) { RTC_DCHECK(internal_dtls_transport_.get()); internal_dtls_transport_->SignalDtlsState.connect( this, &DtlsTransport::OnInternalDtlsState); - ice_transport_ = new rtc::RefCountedObject( - internal_dtls_transport_->ice_transport()); UpdateInformation(); } @@ -77,8 +77,6 @@ void DtlsTransport::UnregisterObserver() { } rtc::scoped_refptr DtlsTransport::ice_transport() { - RTC_DCHECK_RUN_ON(owner_thread_); - rtc::CritScope scope(&lock_); return ice_transport_; } diff --git a/pc/dtls_transport.h b/pc/dtls_transport.h index 0251716b32..392532a43e 100644 --- a/pc/dtls_transport.h +++ b/pc/dtls_transport.h @@ -66,8 +66,7 @@ class DtlsTransport : public DtlsTransportInterface, DtlsTransportInformation info_ RTC_GUARDED_BY(lock_); std::unique_ptr internal_dtls_transport_ RTC_GUARDED_BY(lock_); - rtc::scoped_refptr ice_transport_ - RTC_GUARDED_BY(lock_); + const rtc::scoped_refptr ice_transport_; }; } // namespace webrtc