Index: /branches/proxy/src/lib/network/message_manager.h
===================================================================
--- /branches/proxy/src/lib/network/message_manager.h	(revision 9569)
+++ /branches/proxy/src/lib/network/message_manager.h	(revision 9570)
@@ -36,5 +36,6 @@
   MSGID_RESPAWN,                              //!< respawn message
 
-  MSGID_PROXY_NEWCLIENT                        //!< informs the master server about a new client
+  MSGID_PROXY_NEWCLIENT,                       //!< informs the master server about a new client
+  MSGID_PROXY_LEAVECLIENT                      //!< informs the master and other proxy servers about a leaving client
 };
 
Index: /branches/proxy/src/lib/network/network_stream.cc
===================================================================
--- /branches/proxy/src/lib/network/network_stream.cc	(revision 9569)
+++ /branches/proxy/src/lib/network/network_stream.cc	(revision 9570)
@@ -453,4 +453,5 @@
 
 
+
   //check if connections are ok else remove them
   for ( PeerList::iterator it = peers.begin(); it != peers.end(); )
@@ -470,4 +471,6 @@
 
       this->handleDisconnect( it->second.userId);
+      if( SharedNetworkData::getInstance()->isProxyServerActive())
+        ProxyControl::getInstance()->signalLeaveClient(it->second.userId);
 
       it++;
Index: /branches/proxy/src/lib/network/proxy/proxy_control.cc
===================================================================
--- /branches/proxy/src/lib/network/proxy/proxy_control.cc	(revision 9569)
+++ /branches/proxy/src/lib/network/proxy/proxy_control.cc	(revision 9570)
@@ -128,2 +128,60 @@
   return true;
 }
+
+
+
+/**
+ *  signals client disconnect
+ * @param userId userId of the old client
+ */
+void ProxyControl::signalLeaveClient(int userId)
+{
+  PRINTF(0)("Signaling new Client: %i\n", userId);
+  // make sure we are a proxy server
+  assert(SharedNetworkData::getInstance()->isProxyServerActive());
+
+  byte data[INTSIZE];
+
+  assert( Converter::intToByteArray( userId, data, INTSIZE ) == INTSIZE );
+
+  MessageManager::getInstance()->sendMessage( MSGID_PROXY_LEAVECLIENT, data, INTSIZE, RT_SERVER, NET_UNASSIGNED, MP_HIGHBANDWIDTH );
+}
+
+
+/**
+ * this is the handler for proxy signals: removing clients
+ *
+ * @param messageType the type of the message
+ * @param data message data
+ * @param dataLength length of the message data
+ * @param someData some other atteched data
+ * @param senderId id of the sender client
+ * @param destinationId id of the destination client
+ * @return true if succeeded
+ */
+bool ProxyControl::messageHandlerLeaveClient( MessageType messageType, byte * data, int dataLength, void * someData, int senderId, int destinationId  )
+{
+  // body data length correct?
+  if ( dataLength != INTSIZE )
+  {
+    PRINTF(2)("leave client message has wrong size: %d\n", dataLength );
+    return true;
+  }
+  // read the userId fromt he message body
+  int leaveClientId = 0;
+  assert( Converter::byteArrayToInt( data, &leaveClientId) == INTSIZE );
+
+  PRINTF(0)("Got Signal: from %i new player left with userId: %i\n", senderId, leaveClientId);
+  // part for the master server
+  if( SharedNetworkData::getInstance()->isMasterServer())
+  {
+    // we now create the new player ship and stuff...
+    NetworkGameManager::getInstance()->signalNewPlayer(leaveClientId);
+  }
+  else if(SharedNetworkData::getInstance()->isProxyServerActive())
+  {
+
+  }
+
+  return true;
+}
Index: /branches/proxy/src/lib/network/proxy/proxy_control.h
===================================================================
--- /branches/proxy/src/lib/network/proxy/proxy_control.h	(revision 9569)
+++ /branches/proxy/src/lib/network/proxy/proxy_control.h	(revision 9570)
@@ -31,4 +31,7 @@
     static bool messageHandlerNewClient( MessageType messageType, byte * data, int dataLength, void * someData, int senderId, int destinationId  );
 
+    void signalLeaveClient(int userId);
+    static bool messageHandlerLeaveClient( MessageType messageType, byte * data, int dataLength, void * someData, int senderId, int destinationId  );
+
 
   private:
