| Index: webrtc/pc/channel.h
|
| diff --git a/webrtc/pc/channel.h b/webrtc/pc/channel.h
|
| index b95bd529b005a71e5b749dc1333425467ece376d..10b0b8f30b3a096ccf7b1c8adc5522802061eb08 100644
|
| --- a/webrtc/pc/channel.h
|
| +++ b/webrtc/pc/channel.h
|
| @@ -30,10 +30,13 @@
|
| #include "webrtc/p2p/base/transportcontroller.h"
|
| #include "webrtc/p2p/client/socketmonitor.h"
|
| #include "webrtc/pc/audiomonitor.h"
|
| +#include "webrtc/pc/dtlssrtptransport.h"
|
| #include "webrtc/pc/mediamonitor.h"
|
| #include "webrtc/pc/mediasession.h"
|
| #include "webrtc/pc/rtcpmuxfilter.h"
|
| +#include "webrtc/pc/rtptransport.h"
|
| #include "webrtc/pc/srtpfilter.h"
|
| +#include "webrtc/pc/srtptransport.h"
|
| #include "webrtc/rtc_base/asyncinvoker.h"
|
| #include "webrtc/rtc_base/asyncudpsocket.h"
|
| #include "webrtc/rtc_base/criticalsection.h"
|
| @@ -44,7 +47,6 @@
|
| namespace webrtc {
|
| class AudioSinkInterface;
|
| class RtpTransportInternal;
|
| -class SrtpTransport;
|
| } // namespace webrtc
|
|
|
| namespace cricket {
|
| @@ -103,7 +105,9 @@ class BaseChannel
|
| // This function returns true if we are using SDES.
|
| bool sdes_active() const { return sdes_negotiator_.IsActive(); }
|
| // The following function returns true if we are using DTLS-based keying.
|
| - bool dtls_active() const { return dtls_active_; }
|
| + bool dtls_active() const {
|
| + return dtls_srtp_transport_ && dtls_srtp_transport_->IsActive();
|
| + }
|
| // This function returns true if using SRTP (DTLS-based keying or SDES).
|
| bool srtp_active() const { return sdes_active() || dtls_active(); }
|
|
|
| @@ -379,6 +383,12 @@ class BaseChannel
|
| void UpdateTransportOverhead();
|
| // Wraps the existing RtpTransport in an SrtpTransport.
|
| void EnableSrtpTransport_n();
|
| + // Create an SrtpTransport and wrap it in an DtlsSrptTransport.
|
| + void EnableDtlsSrtpTransport_n();
|
| + // Cache the send/recv encrypted header extension ids before the
|
| + // DtlsSrtpTransport is enabled.
|
| + void CacheEncryptedHeaderExtensionIds(cricket::ContentSource source,
|
| + const std::vector<int>& extension_ids);
|
|
|
| rtc::Thread* const worker_thread_;
|
| rtc::Thread* const network_thread_;
|
| @@ -393,13 +403,19 @@ class BaseChannel
|
|
|
| const bool rtcp_mux_required_;
|
|
|
| + std::vector<int> send_encrypted_header_extension_ids_;
|
| + std::vector<int> recv_encrypted_header_extension_ids_;
|
| +
|
| // Separate DTLS/non-DTLS pointers to support using BaseChannel without DTLS.
|
| // Temporary measure until more refactoring is done.
|
| // If non-null, "X_dtls_transport_" will always equal "X_packet_transport_".
|
| DtlsTransportInternal* rtp_dtls_transport_ = nullptr;
|
| DtlsTransportInternal* rtcp_dtls_transport_ = nullptr;
|
| +
|
| std::unique_ptr<webrtc::RtpTransportInternal> rtp_transport_;
|
| webrtc::SrtpTransport* srtp_transport_ = nullptr;
|
| + webrtc::DtlsSrtpTransport* dtls_srtp_transport_ = nullptr;
|
| +
|
| std::vector<std::pair<rtc::Socket::Option, int> > socket_options_;
|
| std::vector<std::pair<rtc::Socket::Option, int> > rtcp_socket_options_;
|
| SrtpFilter sdes_negotiator_;
|
| @@ -407,7 +423,6 @@ class BaseChannel
|
| bool writable_ = false;
|
| bool was_ever_writable_ = false;
|
| bool has_received_packet_ = false;
|
| - bool dtls_active_ = false;
|
| const bool srtp_required_ = true;
|
|
|
| // MediaChannel related members that should be accessed from the worker
|
|
|