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

Unified Diff: webrtc/api/peerconnection.cc

Issue 1975453002: Add PeerConnection IsClosed check. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Make it an unique_ptr when passing the TransportController to WebRtcSession. Created 4 years, 6 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
« no previous file with comments | « no previous file | webrtc/api/peerconnectionfactory.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/api/peerconnection.cc
diff --git a/webrtc/api/peerconnection.cc b/webrtc/api/peerconnection.cc
index b9cb83e724de78db6683bd0dc242afb6d80a928a..8b6b17b4601a2c7ae34df87fab1df2a2a979192d 100644
--- a/webrtc/api/peerconnection.cc
+++ b/webrtc/api/peerconnection.cc
@@ -592,10 +592,13 @@ bool PeerConnection::Initialize(
media_controller_.reset(
factory_->CreateMediaController(configuration.media_config));
- session_.reset(
- new WebRtcSession(media_controller_.get(), factory_->network_thread(),
- factory_->worker_thread(), factory_->signaling_thread(),
- port_allocator_.get()));
+ session_.reset(new WebRtcSession(
+ media_controller_.get(), factory_->network_thread(),
+ factory_->worker_thread(), factory_->signaling_thread(),
+ port_allocator_.get(),
+ std::unique_ptr<cricket::TransportController>(
+ factory_->CreateTransportController(port_allocator_.get()))));
+
stats_.reset(new StatsCollector(this));
// Initialize the WebRtcSession. It creates transport channels etc.
@@ -766,6 +769,9 @@ bool PeerConnection::RemoveTrack(RtpSenderInterface* sender) {
rtc::scoped_refptr<DtmfSenderInterface> PeerConnection::CreateDtmfSender(
AudioTrackInterface* track) {
TRACE_EVENT0("webrtc", "PeerConnection::CreateDtmfSender");
+ if (IsClosed()) {
+ return nullptr;
+ }
if (!track) {
LOG(LS_ERROR) << "CreateDtmfSender - track is NULL.";
return NULL;
@@ -788,6 +794,9 @@ rtc::scoped_refptr<RtpSenderInterface> PeerConnection::CreateSender(
const std::string& kind,
const std::string& stream_id) {
TRACE_EVENT0("webrtc", "PeerConnection::CreateSender");
+ if (IsClosed()) {
+ return nullptr;
+ }
rtc::scoped_refptr<RtpSenderProxyWithInternal<RtpSenderInternal>> new_sender;
if (kind == MediaStreamTrackInterface::kAudioKind) {
new_sender = RtpSenderProxyWithInternal<RtpSenderInternal>::Create(
@@ -998,6 +1007,9 @@ void PeerConnection::SetLocalDescription(
SetSessionDescriptionObserver* observer,
SessionDescriptionInterface* desc) {
TRACE_EVENT0("webrtc", "PeerConnection::SetLocalDescription");
+ if (IsClosed()) {
+ return;
+ }
if (!VERIFY(observer != nullptr)) {
LOG(LS_ERROR) << "SetLocalDescription - observer is NULL.";
return;
@@ -1077,6 +1089,9 @@ void PeerConnection::SetRemoteDescription(
SetSessionDescriptionObserver* observer,
SessionDescriptionInterface* desc) {
TRACE_EVENT0("webrtc", "PeerConnection::SetRemoteDescription");
+ if (IsClosed()) {
+ return;
+ }
if (!VERIFY(observer != nullptr)) {
LOG(LS_ERROR) << "SetRemoteDescription - observer is NULL.";
return;
@@ -1199,6 +1214,9 @@ bool PeerConnection::SetConfiguration(const RTCConfiguration& configuration) {
bool PeerConnection::AddIceCandidate(
const IceCandidateInterface* ice_candidate) {
TRACE_EVENT0("webrtc", "PeerConnection::AddIceCandidate");
+ if (IsClosed()) {
+ return false;
+ }
return session_->ProcessIceMessage(ice_candidate);
}
@@ -1386,17 +1404,26 @@ void PeerConnection::OnIceGatheringChange(
void PeerConnection::OnIceCandidate(const IceCandidateInterface* candidate) {
RTC_DCHECK(signaling_thread()->IsCurrent());
+ if (IsClosed()) {
+ return;
+ }
observer_->OnIceCandidate(candidate);
}
void PeerConnection::OnIceCandidatesRemoved(
const std::vector<cricket::Candidate>& candidates) {
RTC_DCHECK(signaling_thread()->IsCurrent());
+ if (IsClosed()) {
+ return;
+ }
observer_->OnIceCandidatesRemoved(candidates);
}
void PeerConnection::OnIceConnectionReceivingChange(bool receiving) {
RTC_DCHECK(signaling_thread()->IsCurrent());
+ if (IsClosed()) {
+ return;
+ }
observer_->OnIceConnectionReceivingChange(receiving);
}
@@ -1416,6 +1443,9 @@ void PeerConnection::ChangeSignalingState(
void PeerConnection::OnAudioTrackAdded(AudioTrackInterface* track,
MediaStreamInterface* stream) {
+ if (IsClosed()) {
+ return;
+ }
auto sender = FindSenderForTrack(track);
if (sender != senders_.end()) {
// We already have a sender for this track, so just change the stream_id
@@ -1447,6 +1477,9 @@ void PeerConnection::OnAudioTrackAdded(AudioTrackInterface* track,
// indefinitely, when we have unified plan SDP.
void PeerConnection::OnAudioTrackRemoved(AudioTrackInterface* track,
MediaStreamInterface* stream) {
+ if (IsClosed()) {
+ return;
+ }
auto sender = FindSenderForTrack(track);
if (sender == senders_.end()) {
LOG(LS_WARNING) << "RtpSender for track with id " << track->id()
@@ -1459,6 +1492,9 @@ void PeerConnection::OnAudioTrackRemoved(AudioTrackInterface* track,
void PeerConnection::OnVideoTrackAdded(VideoTrackInterface* track,
MediaStreamInterface* stream) {
+ if (IsClosed()) {
+ return;
+ }
auto sender = FindSenderForTrack(track);
if (sender != senders_.end()) {
// We already have a sender for this track, so just change the stream_id
@@ -1482,6 +1518,9 @@ void PeerConnection::OnVideoTrackAdded(VideoTrackInterface* track,
void PeerConnection::OnVideoTrackRemoved(VideoTrackInterface* track,
MediaStreamInterface* stream) {
+ if (IsClosed()) {
+ return;
+ }
auto sender = FindSenderForTrack(track);
if (sender == senders_.end()) {
LOG(LS_WARNING) << "RtpSender for track with id " << track->id()
« no previous file with comments | « no previous file | webrtc/api/peerconnectionfactory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698