[Orxonox-commit 3130] r7824 - code/branches/network6/src/libraries/network
scheusso at orxonox.net
scheusso at orxonox.net
Tue Dec 28 19:11:32 CET 2010
Author: scheusso
Date: 2010-12-28 19:11:32 +0100 (Tue, 28 Dec 2010)
New Revision: 7824
Modified:
code/branches/network6/src/libraries/network/Connection.cc
Log:
this should prevent disconnecting clients from crashing our servers ;)
Modified: code/branches/network6/src/libraries/network/Connection.cc
===================================================================
--- code/branches/network6/src/libraries/network/Connection.cc 2010-12-28 15:46:42 UTC (rev 7823)
+++ code/branches/network6/src/libraries/network/Connection.cc 2010-12-28 18:11:32 UTC (rev 7824)
@@ -182,14 +182,30 @@
switch( event.type )
{
case outgoingEventType::sendPacket:
- assert(this->peerMap_.find(event.peerID) != this->peerMap_.end());
- peer = this->peerMap_[event.peerID];
- enet_peer_send( peer, event.channelID, event.packet );
+ // check whether the peer is still/already in the peer list
+ if( this->peerMap_.find(event.peerID) != this->peerMap_.end() )
+ {
+ peer = this->peerMap_[event.peerID];
+ enet_peer_send( peer, event.channelID, event.packet );
+ }
+ else
+ {
+ // peer probably already disconnected so just discard packet
+ assert(event.peerID<this->nextPeerID_);
+ delete event.packet;
+ }
break;
case outgoingEventType::disconnectPeer:
- assert(this->peerMap_.find(event.peerID) != this->peerMap_.end());
- peer = this->peerMap_[event.peerID];
- enet_peer_disconnect(peer, 0);
+ if( this->peerMap_.find(event.peerID) != this->peerMap_.end() )
+ {
+ peer = this->peerMap_[event.peerID];
+ enet_peer_disconnect(peer, 0);
+ }
+ else
+ {
+ // peer probably already disconnected so just discard disconnect event
+ assert(event.peerID<this->nextPeerID_);
+ }
break;
case outgoingEventType::disconnectPeers:
while( this->peerMap_.size()!=0 )
More information about the Orxonox-commit
mailing list