Cancel pending operations for the DCC during Pc::Close()

(using no-try due to bot infra issue)

No-try: true
Bug: b/276434297
Change-Id: I33f796b501f96731c4ca76cb62c2331f10c795f1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/299708
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39734}
This commit is contained in:
Tommi 2023-03-31 18:40:50 +02:00 committed by WebRTC LUCI CQ
parent dc806fd16a
commit 1f708ef2ff
3 changed files with 13 additions and 3 deletions

View File

@ -165,6 +165,11 @@ void DataChannelController::SetupDataChannelTransport_n() {
NotifyDataChannelsOfTransportCreated();
}
void DataChannelController::PrepareForShutdown() {
RTC_DCHECK_RUN_ON(signaling_thread());
signaling_safety_.reset();
}
void DataChannelController::TeardownDataChannelTransport_n() {
RTC_DCHECK_RUN_ON(network_thread());
if (data_channel_transport()) {

View File

@ -64,6 +64,9 @@ class DataChannelController : public SctpDataChannelControllerInterface,
void OnReadyToSend() override;
void OnTransportClosed(RTCError error) override;
// Called as part of destroying the owning PeerConnection.
void PrepareForShutdown();
// Called from PeerConnection::SetupDataChannelTransport_n
void SetupDataChannelTransport_n();
// Called from PeerConnection::TeardownDataChannelTransport_n

View File

@ -1924,13 +1924,15 @@ void PeerConnection::Close() {
event_log_.reset();
});
ReportUsagePattern();
// The .h file says that observer can be discarded after close() returns.
// Make sure this is true.
observer_ = nullptr;
// Signal shutdown to the sdp handler. This invalidates weak pointers for
// internal pending callbacks.
sdp_handler_->PrepareForShutdown();
data_channel_controller_.PrepareForShutdown();
// The .h file says that observer can be discarded after close() returns.
// Make sure this is true.
observer_ = nullptr;
}
void PeerConnection::SetIceConnectionState(IceConnectionState new_state) {