Fix use-after-free in MoQ Chat Server.

When the server is tearing down, it triggers session teardown logic that calls server functions. Those calls should exit early.

Repro now passes.

PiperOrigin-RevId: 713340105
diff --git a/quiche/quic/moqt/tools/chat_server.cc b/quiche/quic/moqt/tools/chat_server.cc
index 871390b..e6a03f9 100644
--- a/quiche/quic/moqt/tools/chat_server.cc
+++ b/quiche/quic/moqt/tools/chat_server.cc
@@ -77,7 +77,6 @@
       [this](absl::string_view error_message) {
         std::cout << "Session terminated, reason = " << error_message << "\n";
         session_ = nullptr;
-        server_->DeleteSession(it_);
         if (track_name_.has_value()) {
           server_->DeleteUser(*track_name_);
         }
@@ -205,6 +204,9 @@
 }
 
 void ChatServer::DeleteUser(FullTrackName track_name) {
+  if (!is_running_) {
+    return;
+  }
   // RemoveAllSubscriptions() sends a SUBSCRIBE_DONE for each.
   user_queues_[track_name]->RemoveAllSubscriptions();
   user_queues_.erase(track_name);