diff --git a/server/gameserver/GGListener.cc b/server/gameserver/GGListener.cc index 5ef35cf8..1dda9a0a 100644 --- a/server/gameserver/GGListener.cc +++ b/server/gameserver/GGListener.cc @@ -254,4 +254,14 @@ void GGListener::RemoveSocketDisconnectHandler(std::weak_ptrOnClientDisconnect(socket_handle); + auto itr = disconnect_listener_hash_.find(socket_handle); + if (itr != disconnect_listener_hash_.end()) { + std::vector> del_handlers; + SocketDisconnectHandler *handle = nullptr, *tmp = nullptr; + list_for_each_entry_safe(handle, tmp, &itr->second, entry) { + del_handlers.push_back(handle->holder); + //handle->cb(a8::Args({itr->first})); + } + disconnect_listener_hash_.erase(itr); + } }