From 35925a98a67e073ca0152d43e1a3fc056941bedd Mon Sep 17 00:00:00 2001 From: Mark Vejvoda Date: Mon, 10 Jan 2011 21:00:55 +0000 Subject: [PATCH] - attempt to fix tomreyns socket fuzzer --- source/glest_game/network/connection_slot.cpp | 2 +- source/glest_game/network/server_interface.cpp | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/source/glest_game/network/connection_slot.cpp b/source/glest_game/network/connection_slot.cpp index bf7c42fcb..a573329f6 100644 --- a/source/glest_game/network/connection_slot.cpp +++ b/source/glest_game/network/connection_slot.cpp @@ -186,7 +186,7 @@ ConnectionSlot::ConnectionSlot(ServerInterface* serverInterface, int playerIndex } ConnectionSlot::~ConnectionSlot() { - SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s] START\n",__FILE__,__FUNCTION__); + SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] START\n",__FILE__,__FUNCTION__,__LINE__); if(BaseThread::shutdownAndWait(slotThreadWorker) == true) { SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); diff --git a/source/glest_game/network/server_interface.cpp b/source/glest_game/network/server_interface.cpp index 34d53895e..fb8723792 100644 --- a/source/glest_game/network/server_interface.cpp +++ b/source/glest_game/network/server_interface.cpp @@ -199,14 +199,18 @@ void ServerInterface::addSlot(int playerIndex) { MutexSafeWrapper safeMutexSlot(&slotAccessorMutexes[playerIndex],intToStr(__LINE__) + "_" + intToStr(playerIndex)); SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); - delete slots[playerIndex]; - SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); + ConnectionSlot *slot = slots[playerIndex]; + if(slot != NULL) { + slots[playerIndex]=NULL; + } slots[playerIndex]= new ConnectionSlot(this, playerIndex); SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); - safeMutexSlot.ReleaseLock(); + delete slot; + SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); + safeMutex.ReleaseLock(); SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); @@ -290,7 +294,6 @@ void ServerInterface::removeSlot(int playerIndex,int lockedSlotIndex) { } SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s] Line: %d playerIndex = %d\n",__FILE__,__FUNCTION__,__LINE__,playerIndex); - delete slots[playerIndex]; slots[playerIndex]= NULL; safeMutexSlot.ReleaseLock(); @@ -298,6 +301,10 @@ void ServerInterface::removeSlot(int playerIndex,int lockedSlotIndex) { SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s] Line: %d playerIndex = %d\n",__FILE__,__FUNCTION__,__LINE__,playerIndex); + delete slot; + + SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s] Line: %d playerIndex = %d\n",__FILE__,__FUNCTION__,__LINE__,playerIndex); + updateListen(); SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s] Line: %d playerIndex = %d\n",__FILE__,__FUNCTION__,__LINE__,playerIndex);