(svn r26043) -Fix [FS#5811]: occasional hanging when client joins

This commit is contained in:
rubidium 2013-11-21 18:35:31 +00:00
parent ae7b830964
commit 1a043202d1
1 changed files with 6 additions and 9 deletions

View File

@ -113,6 +113,12 @@ struct PacketWriter : SaveFilter {
if (this->mutex != NULL) this->mutex->SendSignal();
if (this->mutex != NULL) this->mutex->EndCritical();
/* Make sure the saving is completely cancelled. Yes,
* we need to handle the save finish as well as the
* next connection might just be requesting a map. */
WaitTillSaved();
ProcessAsyncSaveFinish();
}
/**
@ -236,13 +242,6 @@ ServerNetworkGameSocketHandler::~ServerNetworkGameSocketHandler()
this->savegame->Destroy();
this->savegame = NULL;
}
/* Make sure the saving is completely cancelled.
* Yes, we need to handle the save finish as well
* as the next connection in this "loop" might
* just be requesting the map and such. */
WaitTillSaved();
ProcessAsyncSaveFinish();
}
Packet *ServerNetworkGameSocketHandler::ReceivePacket()
@ -622,8 +621,6 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendMap()
this->savegame->Destroy();
this->savegame = NULL;
WaitTillSaved();
/* Set the status to DONE_MAP, no we will wait for the client
* to send it is ready (maybe that happens like never ;)) */
this->status = STATUS_DONE_MAP;