Use CallbackList in DtlsHandshakeError in dtls_transport.

- Signal is transferred from jsep_transport_controller to dtls_transport,
  jsep_transport_controller is already using Callbacklist and this
  modified the dtls_transport to use callback_list.

Bug: webrtc:11943
Change-Id: I4a7ed08e6dab21b8eb515d4d8971f9b084fb8c86
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/203722
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Lahiru Ginnaliya Gamathige <glahiru@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33137}
This commit is contained in:
Lahiru Ginnaliya Gamathige
2021-02-02 07:27:09 -08:00
committed by Commit Bot
parent c8421c4c3e
commit 16ab60c4c6
4 changed files with 19 additions and 2 deletions

View File

@ -98,6 +98,7 @@ rtc_library("rtc_p2p") {
"../rtc_base", "../rtc_base",
"../rtc_base:async_resolver_interface", "../rtc_base:async_resolver_interface",
"../rtc_base:async_socket", "../rtc_base:async_socket",
"../rtc_base:callback_list",
"../rtc_base:checks", "../rtc_base:checks",
"../rtc_base:ip_address", "../rtc_base:ip_address",
"../rtc_base:net_helpers", "../rtc_base:net_helpers",

View File

@ -820,7 +820,9 @@ void DtlsTransport::set_dtls_state(DtlsTransportState state) {
} }
void DtlsTransport::OnDtlsHandshakeError(rtc::SSLHandshakeError error) { void DtlsTransport::OnDtlsHandshakeError(rtc::SSLHandshakeError error) {
// Keep the old signaling for downstream usage.
SignalDtlsHandshakeError(error); SignalDtlsHandshakeError(error);
SendDtlsHandshakeError(error);
} }
void DtlsTransport::ConfigureHandshakeTimeout() { void DtlsTransport::ConfigureHandshakeTimeout() {

View File

@ -16,12 +16,14 @@
#include <memory> #include <memory>
#include <string> #include <string>
#include <utility>
#include "api/crypto/crypto_options.h" #include "api/crypto/crypto_options.h"
#include "api/dtls_transport_interface.h" #include "api/dtls_transport_interface.h"
#include "api/scoped_refptr.h" #include "api/scoped_refptr.h"
#include "p2p/base/ice_transport_internal.h" #include "p2p/base/ice_transport_internal.h"
#include "p2p/base/packet_transport_internal.h" #include "p2p/base/packet_transport_internal.h"
#include "rtc_base/callback_list.h"
#include "rtc_base/constructor_magic.h" #include "rtc_base/constructor_magic.h"
#include "rtc_base/ssl_certificate.h" #include "rtc_base/ssl_certificate.h"
#include "rtc_base/ssl_fingerprint.h" #include "rtc_base/ssl_fingerprint.h"
@ -116,12 +118,23 @@ class DtlsTransportInternal : public rtc::PacketTransportInternal {
// Emitted whenever the Dtls handshake failed on some transport channel. // Emitted whenever the Dtls handshake failed on some transport channel.
sigslot::signal1<rtc::SSLHandshakeError> SignalDtlsHandshakeError; sigslot::signal1<rtc::SSLHandshakeError> SignalDtlsHandshakeError;
// F: void(rtc::SSLHandshakeError)
template <typename F>
void SubscribeDtlsHandshakeError(F&& callback) {
dtls_handshake_error_callback_list_.AddReceiver(std::forward<F>(callback));
}
void SendDtlsHandshakeError(rtc::SSLHandshakeError error) {
dtls_handshake_error_callback_list_.Send(error);
}
protected: protected:
DtlsTransportInternal(); DtlsTransportInternal();
private: private:
RTC_DISALLOW_COPY_AND_ASSIGN(DtlsTransportInternal); RTC_DISALLOW_COPY_AND_ASSIGN(DtlsTransportInternal);
webrtc::CallbackList<const rtc::SSLHandshakeError>
dtls_handshake_error_callback_list_;
}; };
} // namespace cricket } // namespace cricket

View File

@ -477,8 +477,6 @@ JsepTransportController::CreateDtlsTransport(
this, &JsepTransportController::OnTransportWritableState_n); this, &JsepTransportController::OnTransportWritableState_n);
dtls->SignalReceivingState.connect( dtls->SignalReceivingState.connect(
this, &JsepTransportController::OnTransportReceivingState_n); this, &JsepTransportController::OnTransportReceivingState_n);
dtls->SignalDtlsHandshakeError.connect(
this, &JsepTransportController::OnDtlsHandshakeError);
dtls->ice_transport()->SignalGatheringState.connect( dtls->ice_transport()->SignalGatheringState.connect(
this, &JsepTransportController::OnTransportGatheringState_n); this, &JsepTransportController::OnTransportGatheringState_n);
dtls->ice_transport()->SignalCandidateGathered.connect( dtls->ice_transport()->SignalCandidateGathered.connect(
@ -495,6 +493,9 @@ JsepTransportController::CreateDtlsTransport(
this, &JsepTransportController::OnTransportStateChanged_n); this, &JsepTransportController::OnTransportStateChanged_n);
dtls->ice_transport()->SignalCandidatePairChanged.connect( dtls->ice_transport()->SignalCandidatePairChanged.connect(
this, &JsepTransportController::OnTransportCandidatePairChanged_n); this, &JsepTransportController::OnTransportCandidatePairChanged_n);
dtls->SubscribeDtlsHandshakeError(
[this](rtc::SSLHandshakeError error) { OnDtlsHandshakeError(error); });
return dtls; return dtls;
} }