diff options
Diffstat (limited to 'chromium/services/network/web_transport.cc')
-rw-r--r-- | chromium/services/network/web_transport.cc | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/chromium/services/network/web_transport.cc b/chromium/services/network/web_transport.cc index 8ddbeb9473c..cd92d0f26b2 100644 --- a/chromium/services/network/web_transport.cc +++ b/chromium/services/network/web_transport.cc @@ -177,7 +177,7 @@ class WebTransport::Stream final { ~Stream() { auto* stream = incoming_ ? incoming_.get() : outgoing_.get(); - if (!stream) { + if (!stream || transport_->closing_ || transport_->torn_down_) { return; } stream->MaybeResetDueToStreamObjectGone(); @@ -399,7 +399,10 @@ WebTransport::WebTransport( transport_->Connect(); } -WebTransport::~WebTransport() = default; +WebTransport::~WebTransport() { + // Ensure that we ignore all callbacks while mid-destruction. + torn_down_ = true; +} void WebTransport::SendDatagram(base::span<const uint8_t> data, base::OnceCallback<void(bool)> callback) { |