From 858bb4045f4aef71e496b361eff756756f37a5b8 Mon Sep 17 00:00:00 2001 From: Ted John Date: Mon, 31 Aug 2020 20:23:11 +0100 Subject: [PATCH] Explicitly close sockets when plugin is stopped --- src/openrct2/scripting/ScriptEngine.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/openrct2/scripting/ScriptEngine.cpp b/src/openrct2/scripting/ScriptEngine.cpp index 28c1cd323d..102454b362 100644 --- a/src/openrct2/scripting/ScriptEngine.cpp +++ b/src/openrct2/scripting/ScriptEngine.cpp @@ -1165,10 +1165,20 @@ void ScriptEngine::UpdateSockets() void ScriptEngine::RemoveSockets(const std::shared_ptr& plugin) { # ifndef DISABLE_NETWORK - _sockets.erase( - std::remove_if( - _sockets.begin(), _sockets.end(), [&plugin](const auto& socket) { return socket->GetPlugin() == plugin; }), - _sockets.end()); + auto it = _sockets.begin(); + while (it != _sockets.end()) + { + auto socket = it->get(); + if (socket->GetPlugin() == plugin) + { + socket->Dispose(); + it = _sockets.erase(it); + } + else + { + it++; + } + } # endif }