From adfd64803108b0f418a5f5cb4ea96b25d2eaa45c Mon Sep 17 00:00:00 2001 From: rubidium Date: Sat, 12 Feb 2011 21:09:34 +0000 Subject: (svn r22068) -Codechange/Fix: return "connection lost" instead of "okay" when SendPackets closed the connection --- src/network/network_server.cpp | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'src/network/network_server.cpp') diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp index 071903797..d465078a7 100644 --- a/src/network/network_server.cpp +++ b/src/network/network_server.cpp @@ -573,13 +573,23 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendMap() if (this->savegame_mutex != NULL) this->savegame_mutex->EndCritical(); - /* Send all packets (forced) and check if we have send it all */ - if (this->SendPackets() && this->IsPacketQueueEmpty()) { - /* All are sent, increase the sent_packets */ - if (this->savegame_packets != NULL) sent_packets *= 2; - } else { - /* Not everything is sent, decrease the sent_packets */ - if (sent_packets > 1) sent_packets /= 2; + switch (this->SendPackets()) { + case SPS_CLOSED: + return NETWORK_RECV_STATUS_CONN_LOST; + + case SPS_ALL_SENT: + /* All are sent, increase the sent_packets */ + if (this->savegame_packets != NULL) sent_packets *= 2; + break; + + case SPS_PARTLY_SENT: + /* Only a part is sent; leave the transmission state. */ + break; + + case SPS_NONE_SENT: + /* Not everything is sent, decrease the sent_packets */ + if (sent_packets > 1) sent_packets /= 2; + break; } } return NETWORK_RECV_STATUS_OKAY; -- cgit v1.2.3-54-g00ecf