netpanzer-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[netPanzer-CVS] netpanzer ./BUGS src/NetPanzer/Interfaces/unix/...


From: Ivo Danihelka
Subject: [netPanzer-CVS] netpanzer ./BUGS src/NetPanzer/Interfaces/unix/...
Date: Wed, 22 Oct 2003 11:53:05 -0400

CVSROOT:        /cvsroot/netpanzer
Module name:    netpanzer
Branch:         
Changes by:     Ivo Danihelka <address@hidden>  03/10/22 11:53:05

Modified files:
        .              : BUGS 
        src/NetPanzer/Interfaces/unix: NetworkServerUnix.cpp 
        src/UILib/Network: ClientList.hpp ServerSocket.cpp 

Log message:
        Fixed SIGSEGV when client disconnect

Patches:
Index: netpanzer/BUGS
diff -u netpanzer/BUGS:1.3 netpanzer/BUGS:1.4
--- netpanzer/BUGS:1.3  Wed Oct 22 09:19:27 2003
+++ netpanzer/BUGS      Wed Oct 22 11:53:02 2003
@@ -27,6 +27,6 @@
 <kov> No locals.
 <kov> (gdb)
 //-----------------------------------------------------------------
-- still SIGSEGV when client disconnect
+- still SIGSEGV when client disconnect - fixed
 - does not display unit pictures in factory - fixed
 - objective game cannot finish - fixed
Index: netpanzer/src/NetPanzer/Interfaces/unix/NetworkServerUnix.cpp
diff -u netpanzer/src/NetPanzer/Interfaces/unix/NetworkServerUnix.cpp:1.6 
netpanzer/src/NetPanzer/Interfaces/unix/NetworkServerUnix.cpp:1.7
--- netpanzer/src/NetPanzer/Interfaces/unix/NetworkServerUnix.cpp:1.6   Tue Sep 
16 16:16:12 2003
+++ netpanzer/src/NetPanzer/Interfaces/unix/NetworkServerUnix.cpp       Wed Oct 
22 11:53:03 2003
@@ -71,12 +71,13 @@
     } catch(Exception e) {
         LOG ( ("Network send error when sending to client %d.",
                player_id.getNetworkID()) );
-        //return -1;
+        dropClient(player_id);
+        return _network_failed;
     }
 
     NetworkState::incPacketsSent(message->size);
 
-    return 0;
+    return _network_ok;
 }
 
 int NetworkServerUnix::sendMessage(NetMessage *message, size_t size,
@@ -94,13 +95,13 @@
             sendMessage(client_data_ptr->client_id,    message, size, flags);
         } catch(Exception e) {
             LOG( ("Error while sending network packet.") );
-            //return -1;
+            return _network_failed;
         }
 
         client_data_ptr = client_list.incIteratorPtr(&iterator);
     }
 
-    return 0;
+    return _network_ok;
 }
 
 int NetworkServerUnix::getMessage(NetMessage *message)
Index: netpanzer/src/UILib/Network/ClientList.hpp
diff -u netpanzer/src/UILib/Network/ClientList.hpp:1.4 
netpanzer/src/UILib/Network/ClientList.hpp:1.5
--- netpanzer/src/UILib/Network/ClientList.hpp:1.4      Tue Oct 14 15:24:23 2003
+++ netpanzer/src/UILib/Network/ClientList.hpp  Wed Oct 22 11:53:04 2003
@@ -45,7 +45,10 @@
     }
 
     ClientIterator remove(ClientIterator i)
-    { return clients.erase(i); }
+    {
+        delete *i;
+        return clients.erase(i);
+    }
 
 private:
     std::vector<SocketClient*> clients;
Index: netpanzer/src/UILib/Network/ServerSocket.cpp
diff -u netpanzer/src/UILib/Network/ServerSocket.cpp:1.8 
netpanzer/src/UILib/Network/ServerSocket.cpp:1.9
--- netpanzer/src/UILib/Network/ServerSocket.cpp:1.8    Tue Oct 14 15:24:24 2003
+++ netpanzer/src/UILib/Network/ServerSocket.cpp        Wed Oct 22 11:53:04 2003
@@ -107,10 +107,13 @@
     }
 
     // Search for clients that wants to be removed from the list
-    for(i = clientlist->begin(); i != clientlist->end(); i++) {
+    for(i = clientlist->begin(); i != clientlist->end(); /* empty */) {
         SocketClient* client = *i;
         if(client->wantstodie) {
             i = clientlist->remove(i);
+        }
+        else {
+            i++;
         }
     }
 }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]