Index: branches/proxy/src/lib/network/Makefile.am
===================================================================
--- branches/proxy/src/lib/network/Makefile.am	(revision 9295)
+++ branches/proxy/src/lib/network/Makefile.am	(revision 9296)
@@ -25,4 +25,6 @@
 		      player_stats.cc \
 		      udp_broadcast.cc \
+		      \
+		      proxy/proxy_settings.cc \
 		      \
       		      monitor/connection_monitor.cc \
@@ -66,4 +68,6 @@
 		 udp_broadcast.h \
 		 \
+		 proxy/proxy_settings.cc \
+		 \
                  monitor/connection_monitor.h \
                  monitor/network_monitor.h \
Index: branches/proxy/src/lib/network/handshake.cc
===================================================================
--- branches/proxy/src/lib/network/handshake.cc	(revision 9295)
+++ branches/proxy/src/lib/network/handshake.cc	(revision 9296)
@@ -47,4 +47,5 @@
   registerVar( new SynchronizeableString( &localState.preferedNickName, &remoteState.preferedNickName, "preferedNickName", PERMISSION_ALL ) );
   registerVar( new SynchronizeableIP( &localState.proxy1, &remoteState.proxy1, "proxy server 1", PERMISSION_ALL ) );
+  registerVar( new SynchronizeableIP( &localState.proxy2, &remoteState.proxy1, "proxy server 2", PERMISSION_ALL ) );
 
   // init the local state
@@ -59,4 +60,5 @@
   localState.nodeType = nodeType;
   localState.canDel = 0;
+  localState.redirectProxy = 0;
 
   remoteState.completed = 0;
@@ -70,4 +72,5 @@
   remoteState.nodeType = NET_CLIENT;
   remoteState.canDel = 0;
+  remoteState.redirectProxy = 0;
 
   // activate the synchronization process
@@ -75,4 +78,5 @@
   PRINTF(0)("Handshake created clientId = %d\n", clientId);
 }
+
 
 /**
@@ -125,5 +129,4 @@
     }
 
-
     // cancel
     if ( *it == candel_id )
Index: branches/proxy/src/lib/network/handshake.h
===================================================================
--- branches/proxy/src/lib/network/handshake.h	(revision 9295)
+++ branches/proxy/src/lib/network/handshake.h	(revision 9296)
@@ -31,5 +31,5 @@
   std::string   preferedNickName;              //!< prefered nick name
 
-  int           freeSlots;                     //!< true if there are still free slots on this server
+  int           redirectProxy;                 //!< true if the client should reconnect to a proxy server (either 1 or 2 )
   IPaddress     proxy1;                        //!< ip address of the first proxy (0.0.0.0 of not available)
   IPaddress     proxy2;                        //!< ip address of the second proxy (0.0.0.0 of not available)
@@ -73,4 +73,7 @@
     inline std::string getPreferedNickName(){ return remoteState.preferedNickName; }
 
+    /** @returns if true the local client should reconnect to a proxy server from the proxy server list */
+    inline bool redirect() { return this->remoteState.redirectProxy;}
+
     /** @param address: the address of the proxy server 1 if any */
     inline void setProxy1Address(IPaddress address) { this->localState.proxy1 = address; }
Index: branches/proxy/src/lib/network/monitor/network_monitor.h
===================================================================
--- branches/proxy/src/lib/network/monitor/network_monitor.h	(revision 9295)
+++ branches/proxy/src/lib/network/monitor/network_monitor.h	(revision 9296)
@@ -56,5 +56,5 @@
     inline bool gotFreeSlots() { return (this->localNode->getPlayerNumber() < NET_MAX_CONNECTIONS)?true:false; }
     /** @param node node to be checked for slots @returns true if there are still free network slots available at this node */
-    inline bool gorFreeSlots(NetworkNode* node) { return (node->getPlayerNumber() < NET_MAX_CONNECTIONS)?true:false; }
+    inline bool gotFreeSlots(NetworkNode* node) { return (node->getPlayerNumber() < NET_MAX_CONNECTIONS)?true:false; }
     void getServerWithFreeSlots() { }
 
Index: branches/proxy/src/lib/network/network_stream.cc
===================================================================
--- branches/proxy/src/lib/network/network_stream.cc	(revision 9295)
+++ branches/proxy/src/lib/network/network_stream.cc	(revision 9296)
@@ -191,4 +191,5 @@
 
   hs->setPreferedNickName( Preferences::getInstance()->getString( "multiplayer", "nickname", "Player" ) );
+  //hs->set
 
 //   peers[0].handshake->setSynchronized( true );
Index: branches/proxy/src/lib/network/proxy/proxy_settings.cc
===================================================================
--- branches/proxy/src/lib/network/proxy/proxy_settings.cc	(revision 9296)
+++ branches/proxy/src/lib/network/proxy/proxy_settings.cc	(revision 9296)
@@ -0,0 +1,53 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+### File Specific:
+   main-programmer: Patrick Boenzli
+*/
+
+
+#define DEBUG_MODULE_NETWORK
+
+#include "proxy_settings.h"
+#include "netdefs.h"
+
+
+using namespace std;
+
+
+ProxySettings* ProxySettings::singletonRef = NULL;
+
+/**
+ * Standard constructor
+ */
+ProxySettings::ProxySettings()
+{
+  /* set the class id for the base object */
+  this->setClassID(CL_PROXY_SETTINGS, "ProxySettings");
+}
+
+
+/**
+ * Standard destructor
+ */
+ProxySettings::~ProxySettings()
+{
+  ProxySettings::singletonRef = NULL;
+}
+
+
+
+/**
+ * load the proxy settings
+ * @param root: the root element of the xml elemnts
+ */
+void ProxySettings::loadProxySettings(const TiXmlElement* root)
+{
+}
Index: branches/proxy/src/lib/network/proxy/proxy_settings.h
===================================================================
--- branches/proxy/src/lib/network/proxy/proxy_settings.h	(revision 9296)
+++ branches/proxy/src/lib/network/proxy/proxy_settings.h	(revision 9296)
@@ -0,0 +1,42 @@
+/*!
+ * @file proxy_settings.h
+ *  some shared data from the proxy settings
+ */
+
+#ifndef _PROXY_SETTINGS_H
+#define _PROXY_SETTINGS_H
+
+#include "base_object.h"
+#include "netdefs.h"
+
+
+class NetworkStream;
+class Synchronizeable;
+class TiXmlElement;
+
+
+/* and here is the class itsself*/
+class ProxySettings : public BaseObject
+{
+
+  public:
+    inline static ProxySettings* getInstance() { if (!ProxySettings::singletonRef) ProxySettings::singletonRef = new ProxySettings();
+      return ProxySettings::singletonRef; }
+    virtual ~ProxySettings();
+
+    void loadProxySettings(const TiXmlElement* root);
+
+
+  private:
+    ProxySettings();
+
+
+  private:
+
+    static ProxySettings*       singletonRef;            //!< Pointer to the only instance of this Class
+
+};
+
+
+
+#endif /* _PROXY_SETTINGS_H */
