diff --git a/server/gameserver/GGListener.cc b/server/gameserver/GGListener.cc index dfd472c1..5ef35cf8 100644 --- a/server/gameserver/GGListener.cc +++ b/server/gameserver/GGListener.cc @@ -162,6 +162,16 @@ void GGListener::Init() void GGListener::UnInit() { + std::vector> del_handlers; + for (auto& pair : disconnect_listener_hash_) { + SocketDisconnectHandler *handle = nullptr, *tmp = nullptr; + list_for_each_entry_safe(handle, tmp, &pair.second, entry) { + del_handlers.push_back(handle->holder); + } + } + for (auto& handler : del_handlers) { + RemoveSocketDisconnectHandler(handler); + } tcp_listener_ = nullptr; }