diff --git a/src/citra_qt/multiplayer/host_room.cpp b/src/citra_qt/multiplayer/host_room.cpp
index 3f53b3c8a..946915378 100644
--- a/src/citra_qt/multiplayer/host_room.cpp
+++ b/src/citra_qt/multiplayer/host_room.cpp
@@ -75,13 +75,10 @@ void HostRoomWindow::Host() {
     }
     if (auto member = Network::GetRoomMember().lock()) {
         if (member->IsConnected()) {
-            if (!NetworkMessage::WarnDisconnect()) {
+            auto parent = static_cast<MultiplayerState*>(parentWidget());
+            if (!parent->OnCloseRoom()) {
                 close();
                 return;
-            } else {
-                member->Leave();
-                auto parent = static_cast<MultiplayerState*>(parentWidget());
-                parent->OnCloseRoom();
             }
         }
         ui->host->setDisabled(true);
diff --git a/src/citra_qt/multiplayer/state.cpp b/src/citra_qt/multiplayer/state.cpp
index 5339868fb..3c40a7d86 100644
--- a/src/citra_qt/multiplayer/state.cpp
+++ b/src/citra_qt/multiplayer/state.cpp
@@ -112,9 +112,9 @@ void MultiplayerState::OnCreateRoom() {
     BringWidgetToFront(host_room);
 }
 
-void MultiplayerState::OnCloseRoom() {
+bool MultiplayerState::OnCloseRoom() {
     if (!NetworkMessage::WarnCloseRoom())
-        return;
+        return false;
     if (auto room = Network::GetRoom().lock()) {
         // if you are in a room, leave it
         if (auto member = Network::GetRoomMember().lock()) {
@@ -123,11 +123,12 @@ void MultiplayerState::OnCloseRoom() {
 
         // if you are hosting a room, also stop hosting
         if (room->GetState() != Network::Room::State::Open) {
-            return;
+            return true;
         }
         room->Destroy();
         announce_multiplayer_session->Stop();
     }
+    return true;
 }
 
 void MultiplayerState::OnOpenNetworkRoom() {
diff --git a/src/citra_qt/multiplayer/state.h b/src/citra_qt/multiplayer/state.h
index 1829d19fb..673bc6ecf 100644
--- a/src/citra_qt/multiplayer/state.h
+++ b/src/citra_qt/multiplayer/state.h
@@ -42,7 +42,7 @@ public slots:
     void OnNetworkStateChanged(const Network::RoomMember::State& state);
     void OnViewLobby();
     void OnCreateRoom();
-    void OnCloseRoom();
+    bool OnCloseRoom();
     void OnOpenNetworkRoom();
     void OnDirectConnectToRoom();
     void OnAnnounceFailed(const Common::WebResult&);