Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(161)

Unified Diff: talk/app/webrtc/peerconnection.cc

Issue 1269843005: Added DtlsCertificate, a ref counted object owning an SSLIdentity (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Cleanup Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: talk/app/webrtc/peerconnection.cc
diff --git a/talk/app/webrtc/peerconnection.cc b/talk/app/webrtc/peerconnection.cc
index dba77da219df45c8c47709ceed5c7cc71a805d94..08e31ab1a6e968aa7cdd1434d39dd9d1d555bdad 100644
--- a/talk/app/webrtc/peerconnection.cc
+++ b/talk/app/webrtc/peerconnection.cc
@@ -351,6 +351,55 @@ bool PeerConnection::Initialize(
PortAllocatorFactoryInterface* allocator_factory,
DTLSIdentityServiceInterface* dtls_identity_service,
PeerConnectionObserver* observer) {
+ if (!InitializeCommon(configuration, constraints, allocator_factory,
+ observer)) {
+ if (dtls_identity_service) {
+ // Since we have the ownership of |dtls_identity_service| and will not
+ // pass it to WebRtcSession::Initialize it is our job to delete it.
+ delete dtls_identity_service;
+ }
+ return false;
+ }
+
+ // Initialize the WebRtcSession with our optional |dtls_identity_service|.
+ // It creates transport channels etc.
+ // Note: |session_| takes ownership of |dtls_identity_service|.
+ if (!session_->Initialize(factory_->options(), constraints,
+ dtls_identity_service, configuration)) {
+ return false;
+ }
+ InitializeSessionAfterInit();
+ return true;
+}
+
+bool PeerConnection::Initialize(
+ const PeerConnectionInterface::RTCConfiguration& configuration,
+ const MediaConstraintsInterface* constraints,
+ PortAllocatorFactoryInterface* allocator_factory,
+ rtc::scoped_refptr<DtlsCertificate> certificate,
+ PeerConnectionObserver* observer) {
+ DCHECK(certificate.get());
+
+ if (!InitializeCommon(configuration, constraints, allocator_factory,
+ observer)) {
+ return false;
+ }
+
+ // Initialize the WebRtcSession with our |certificate|.
+ // It creates transport channels etc.
+ if (!session_->Initialize(factory_->options(), constraints,
+ certificate, configuration)) {
+ return false;
+ }
+ InitializeSessionAfterInit();
+ return true;
+}
+
+bool PeerConnection::InitializeCommon(
+ const PeerConnectionInterface::RTCConfiguration& configuration,
+ const MediaConstraintsInterface* constraints,
+ PortAllocatorFactoryInterface* allocator_factory,
+ PeerConnectionObserver* observer) {
ASSERT(observer != NULL);
if (!observer)
return false;
@@ -402,17 +451,14 @@ bool PeerConnection::Initialize(
stream_handler_container_.reset(new MediaStreamHandlerContainer(
session_.get(), session_.get()));
stats_.reset(new StatsCollector(session_.get()));
+ return true;
+}
- // Initialize the WebRtcSession. It creates transport channels etc.
- if (!session_->Initialize(factory_->options(), constraints,
- dtls_identity_service, configuration))
- return false;
-
+void PeerConnection::InitializeSessionAfterInit() {
// Register PeerConnection as receiver of local ice candidates.
// All the callbacks will be posted to the application from PeerConnection.
session_->RegisterIceObserver(this);
session_->SignalState.connect(this, &PeerConnection::OnSessionStateChange);
- return true;
}
rtc::scoped_refptr<StreamCollectionInterface>

Powered by Google App Engine
This is Rietveld 408576698