Delete upstream_ after OnPublishDone() in MoqtRelay. This is to avoid incorrectly sending an UNSUBSCRIBE when listeners are removed. Interop w/ Meta no longer crashes. PiperOrigin-RevId: 836814717
diff --git a/quiche/quic/moqt/moqt_relay_track_publisher.cc b/quiche/quic/moqt/moqt_relay_track_publisher.cc index ef6802e..6e2c722 100644 --- a/quiche/quic/moqt/moqt_relay_track_publisher.cc +++ b/quiche/quic/moqt/moqt_relay_track_publisher.cc
@@ -205,9 +205,13 @@ } } } - for (MoqtObjectListener* listener : listeners_) { - listener->OnTrackPublisherGone(); + is_closing_ = true; + while (!listeners_.empty()) { + (*listeners_.begin())->OnTrackPublisherGone(); } + upstream_ = quiche::QuicheWeakPtr<MoqtSessionInterface>(); + DeleteTrack(); + // No class access below this line! } void MoqtRelayTrackPublisher::OnStreamFin(const FullTrackName&,