Index: /branches/proxy/src/lib/network/network_manager.cc
===================================================================
--- /branches/proxy/src/lib/network/network_manager.cc	(revision 9599)
+++ /branches/proxy/src/lib/network/network_manager.cc	(revision 9600)
@@ -179,4 +179,15 @@
 
 /**
+ * reconnects this client to another server
+ * @param address new server address
+ */
+void NetworkManager::reconnectToServer(IP address)
+{
+  PRINTF(0)("Rec. reconnection command\n");
+  this->networkStream->reconnectToServer(address);
+}
+
+
+/**
  * connects a synchronizeable to the network stream
  * @param sync: synchronizeable to connect
Index: /branches/proxy/src/lib/network/network_manager.h
===================================================================
--- /branches/proxy/src/lib/network/network_manager.h	(revision 9599)
+++ /branches/proxy/src/lib/network/network_manager.h	(revision 9600)
@@ -39,4 +39,6 @@
     int createProxyServer( unsigned int port);
 
+    void reconnectToServer(IP address);
+
     void connectSynchronizeable(Synchronizeable& sync);
     void synchronize(float dtS);
Index: /branches/proxy/src/lib/network/network_stream.cc
===================================================================
--- /branches/proxy/src/lib/network/network_stream.cc	(revision 9599)
+++ /branches/proxy/src/lib/network/network_stream.cc	(revision 9600)
@@ -741,4 +741,26 @@
 
 
+
+/**
+ * reconnects to another server, with full handshake
+ * @param address of the new server
+ */
+void NetworkStream::reconnectToServer(IP address)
+{
+
+}
+
+
+
+/**
+ * softly reconnecting to another server
+ * @param address  of the new server
+ */
+void NetworkStream::softReconnectToServer(IP address)
+{
+
+}
+
+
 /**
  * handles the disconnect event
Index: /branches/proxy/src/lib/network/network_stream.h
===================================================================
--- /branches/proxy/src/lib/network/network_stream.h	(revision 9599)
+++ /branches/proxy/src/lib/network/network_stream.h	(revision 9600)
@@ -41,4 +41,5 @@
     void init();
 
+    /* network interface controls */
     void connectToMasterServer(std::string host, int port);
     void connectToProxyServer(int proxyId, std::string host, int port);
@@ -47,4 +48,8 @@
     void createNetworkGameManager();
     void startHandshake(int userId = NET_ID_MASTER_SERVER);
+
+    void reconnectToServer(IP address);
+    void softReconnectToServer(IP address);
+
 
     /* synchronizeable interface */
Index: /branches/proxy/src/lib/network/proxy/proxy_control.cc
===================================================================
--- /branches/proxy/src/lib/network/proxy/proxy_control.cc	(revision 9599)
+++ /branches/proxy/src/lib/network/proxy/proxy_control.cc	(revision 9600)
@@ -16,8 +16,9 @@
 
 #include "class_list.h"
-
+#include "shell_command.h"
 
 #include "state.h"
 #include "shared_network_data.h"
+#include "network_manager.h"
 #include "network_game_manager.h"
 #include "ip.h"
@@ -35,4 +36,6 @@
 ProxyControl* ProxyControl::singletonRef = NULL;
 
+
+SHELL_COMMAND(forceReconnect, ProxyControl, forceReconnectionShell);
 
 /**
@@ -227,4 +230,14 @@
 
 
+/**
+ * a shell command wrapper
+ * @param userId the userId of the client/user :D
+ * @param serverId the userId of the server to connect to
+ */
+void ProxyControl::forceReconnectionShell(int userId, int serverId)
+{
+  this->forceReconnection(userId, serverId);
+}
+
 
 /**
@@ -332,6 +345,8 @@
 
       // handle it
-      if( SharedNetworkData::getInstance()->isMasterServer() || SharedNetworkData::getInstance()->isProxyServerActive())
+      if( SharedNetworkData::getInstance()->getHostID() == userId &&
+         (SharedNetworkData::getInstance()->isMasterServer() || SharedNetworkData::getInstance()->isProxyServerActive()))
       {
+        NetworkManager::getInstance()->reconnectToServer(IP(ipHost, 9999));
       }
       break;
Index: /branches/proxy/src/lib/network/proxy/proxy_control.h
===================================================================
--- /branches/proxy/src/lib/network/proxy/proxy_control.h	(revision 9599)
+++ /branches/proxy/src/lib/network/proxy/proxy_control.h	(revision 9600)
@@ -43,4 +43,5 @@
 
     /* proxy server network control */
+    void forceReconnectionShell(int userId, int serverId);
     void forceReconnection(int userId, int serverId);
     void forceReconnection(int userId, IP newAddress);
