| 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()
|
|
|