Index: branches/network/src/lib/network/connection_monitor.h
===================================================================
--- branches/network/src/lib/network/connection_monitor.h	(revision 8273)
+++ branches/network/src/lib/network/connection_monitor.h	(revision 8301)
@@ -14,5 +14,5 @@
 #define N_PACKETS_FOR_PING 20
 #define MSECS_TO_CALC_BWIDTH 1000
-#define SECS_TO_TIMEOUT 10
+#define SECS_TO_TIMEOUT 30
 
 class ConnectionMonitor : virtual public BaseObject
Index: branches/network/src/lib/network/network_game_manager.cc
===================================================================
--- branches/network/src/lib/network/network_game_manager.cc	(revision 8273)
+++ branches/network/src/lib/network/network_game_manager.cc	(revision 8301)
@@ -71,4 +71,6 @@
 {
   delete MessageManager::getInstance();
+  
+  PlayerStats::deleteAllPlayerStats();
 }
 
Index: branches/network/src/lib/network/player_stats.cc
===================================================================
--- branches/network/src/lib/network/player_stats.cc	(revision 8273)
+++ branches/network/src/lib/network/player_stats.cc	(revision 8301)
@@ -228,2 +228,11 @@
 
 
+
+void PlayerStats::deleteAllPlayerStats( )
+{
+  const std::list<BaseObject*> * list;
+  
+  while ( (list  = ClassList::getList( CL_PLAYER_STATS )) != NULL && list->begin() != list->end() )
+    delete *list->begin();
+}
+
Index: branches/network/src/lib/network/player_stats.h
===================================================================
--- branches/network/src/lib/network/player_stats.h	(revision 8273)
+++ branches/network/src/lib/network/player_stats.h	(revision 8301)
@@ -60,4 +60,6 @@
     static bool changeNickHandler( MessageId messageId, byte * data, int dataLength, void * someData, int userId );
     void shellNick( const std::string&  newNick );
+    
+    static void deleteAllPlayerStats();
 
   private:
Index: branches/network/src/lib/network/synchronizeable.cc
===================================================================
--- branches/network/src/lib/network/synchronizeable.cc	(revision 8273)
+++ branches/network/src/lib/network/synchronizeable.cc	(revision 8301)
@@ -83,5 +83,9 @@
     for ( StateHistory::iterator it2 = it->begin(); it2 != it->end(); it2++ )
     {
-      delete [] (*it2)->data;
+      if ( (*it2)->data )
+      {
+        delete [] (*it2)->data;
+        (*it2)->data = NULL;
+      }
       delete *it2;
     }
@@ -93,5 +97,9 @@
     for ( StateHistory::iterator it2 = it->begin(); it2 != it->end(); it2++ )
     {
-      delete [] (*it2)->data;
+      if ( (*it2)->data )
+      {
+        delete [] (*it2)->data;
+        (*it2)->data = NULL;
+      }
       delete *it2;
     }
@@ -160,4 +168,6 @@
         (*it2)->data = NULL;
       }
+      
+      delete *it2;
     }
     sentStates[userId].erase( sentStates[userId].begin(), it );
@@ -191,6 +201,8 @@
     stateFrom = (*it);
 
-  StateHistoryEntry * stateTo = new StateHistoryEntry();
-
+  StateHistoryEntry * stateTo = new StateHistoryEntry;
+
+  sentStates[userId].push_back( stateTo );
+  
   stateTo->stateId = stateId;
   stateTo->dataLength = neededSize;
@@ -241,6 +253,4 @@
   }
 
-  sentStates[userId].push_back( stateTo );
-  
   if ( i != neededSize )
   {
@@ -407,6 +417,8 @@
     {
       if ( (*it)->data )
+      {
         delete [] (*it)->data;
-      (*it)->data = NULL;
+        (*it)->data = NULL;
+      }
     
       delete *it;
@@ -421,6 +433,8 @@
     {
       if ( (*it)->data )
+      {
         delete [] (*it)->data;
-      (*it)->data = NULL;
+        (*it)->data = NULL;
+      }
     
       delete *it;
@@ -471,5 +485,8 @@
       
       if ( (*delIt)->data )
+      {
         delete [] (*delIt)->data;
+        (*delIt)->data = NULL;
+      }
       delete *delIt;
       recvStates[userId].erase( delIt );
@@ -540,5 +557,8 @@
       
       if ( (*delIt)->data )
+      {
         delete [] (*delIt)->data;
+        (*delIt)->data = NULL;
+      }
       delete *delIt;
       sentStates[userId].erase( delIt );
