Index: branches/proxy/src/lib/network/monitor/network_monitor.cc
===================================================================
--- branches/proxy/src/lib/network/monitor/network_monitor.cc	(revision 9291)
+++ branches/proxy/src/lib/network/monitor/network_monitor.cc	(revision 9292)
@@ -100,5 +100,5 @@
   else if( pInfo->isProxyServer())
   {
-    this->localNode->addProxyServer(pInfo);
+    this->localNode->addActiveProxyServer(pInfo);
     // create a new node, since a proxy can connect clients again
     NetworkNode* node = new NetworkNode(pInfo);
@@ -125,5 +125,5 @@
     node->addClient(pInfo);
   else if( pInfo->isProxyServer())
-    node->addProxyServer(pInfo);
+    node->addActiveProxyServer(pInfo);
   else if( pInfo->isMasterServer())
     node->addMasterServer(pInfo);
Index: branches/proxy/src/lib/network/monitor/network_monitor.h
===================================================================
--- branches/proxy/src/lib/network/monitor/network_monitor.h	(revision 9291)
+++ branches/proxy/src/lib/network/monitor/network_monitor.h	(revision 9292)
@@ -41,10 +41,10 @@
     inline void addClient(NetworkNode* node, PeerInfo* pInfo) { node->addClient(pInfo); }
     /** adds to @param node a network node @param pInfo a new proxy server */
-    inline void addProxyServer(NetworkNode* node, PeerInfo* pInfo) { node->addProxyServer(pInfo); }
+    inline void addActiveProxyServer(NetworkNode* node, PeerInfo* pInfo) { node->addActiveProxyServer(pInfo); }
     /** adds to @param node a network node @param pInfo a new master server*/
     inline void addMasterServer(NetworkNode* node, PeerInfo* pInfo) { node->addMasterServer(pInfo); }
 
     inline void removeClient(NetworkNode* node, PeerInfo* pInfo) { node->removeClient(pInfo); }
-    inline void removeProxyServer(NetworkNode* node, PeerInfo* pInfo) { node->removeProxyServer(pInfo); }
+    inline void removeActiveProxyServer(NetworkNode* node, PeerInfo* pInfo) { node->removeActiveProxyServer(pInfo); }
     inline void removeMasterServer(NetworkNode* node, PeerInfo* pInfo) { node->removeMasterServer(pInfo); }
 
@@ -53,5 +53,7 @@
 
     /** @returns true if there are still free network slots available */
-    inline bool gotFreeSlots() { return (this->playerNumber < NET_MAX_CONNECTIONS)?true:false; }
+    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; }
     void getServerWithFreeSlots() { }
 
Index: branches/proxy/src/lib/network/monitor/network_node.cc
===================================================================
--- branches/proxy/src/lib/network/monitor/network_node.cc	(revision 9291)
+++ branches/proxy/src/lib/network/monitor/network_node.cc	(revision 9292)
@@ -48,8 +48,16 @@
  * adds a proxy server
  */
-void NetworkNode::addProxyServer(PeerInfo* node)
+void NetworkNode::addActiveProxyServer(PeerInfo* node)
 {
-  this->proxyServerList.push_back(node);
+  this->activeProxyServerList.push_back(node);
   this->playerNumber++;
+}
+
+/**
+ * adds a proxy server
+ */
+void NetworkNode::addPassiveProxyServer(PeerInfo* node)
+{
+  this->passiveProxyServerList.push_back(node);
 }
 
@@ -85,13 +93,31 @@
  * removes a proxy server
  */
-void NetworkNode::removeProxyServer(PeerInfo* node)
+void NetworkNode::removeActiveProxyServer(PeerInfo* node)
 {
-  std::list<PeerInfo*>::iterator it = this->proxyServerList.begin();
-  for(; it != this->proxyServerList.end(); it++)
+  std::list<PeerInfo*>::iterator it = this->activeProxyServerList.begin();
+  for(; it != this->activeProxyServerList.end(); it++)
   {
     if( *it == node)
     {
-      this->proxyServerList.erase(it);
+      this->activeProxyServerList.erase(it);
       this->playerNumber--;
+      return;
+    }
+  }
+
+  PRINTF(2)("Could not remove proxy server from the list, very strange...");
+}
+
+/**
+ * removes a proxy server
+ */
+void NetworkNode::removePassiveProxyServer(PeerInfo* node)
+{
+  std::list<PeerInfo*>::iterator it = this->passiveProxyServerList.begin();
+  for(; it != this->passiveProxyServerList.end(); it++)
+  {
+    if( *it == node)
+    {
+      this->passiveProxyServerList.erase(it);
       return;
     }
@@ -137,7 +163,7 @@
   }
 
-  PRINT(0)("    proxy servers: %i\n", this->proxyServerList.size());
-  it = this->proxyServerList.begin();
-  for(; it != this->proxyServerList.end(); it++)
+  PRINT(0)("    proxy servers: %i\n", this->activeProxyServerList.size());
+  it = this->activeProxyServerList.begin();
+  for(; it != this->activeProxyServerList.end(); it++)
   {
     PRINT(0)("     - ps, id: %i\n", (*it)->userId);
Index: branches/proxy/src/lib/network/monitor/network_node.h
===================================================================
--- branches/proxy/src/lib/network/monitor/network_node.h	(revision 9291)
+++ branches/proxy/src/lib/network/monitor/network_node.h	(revision 9292)
@@ -23,9 +23,11 @@
 
     void addClient(PeerInfo* node);
-    void addProxyServer(PeerInfo* node);
+    void addActiveProxyServer(PeerInfo* node);
+    void addPassiveProxyServer(PeerInfo* node);
     void addMasterServer(PeerInfo* node);
 
     void removeClient(PeerInfo* node);
-    void removeProxyServer(PeerInfo* node);
+    void removeActiveProxyServer(PeerInfo* node);
+    void removePassiveProxyServer(PeerInfo* node);
     void removeMasterServer(PeerInfo* node);
 
@@ -46,5 +48,6 @@
     /* network nodes directly connected to this node */
     std::list<PeerInfo*>         clientList;                   //!< list of all clients in the network
-    std::list<PeerInfo*>         proxyServerList;              //!< list of all proxy servers in the network
+    std::list<PeerInfo*>         activeProxyServerList;        //!< list of all proxy servers in the network
+    std::list<PeerInfo*>         passiveProxyServerList;       //!< list of all proxy servers in the network
     std::list<PeerInfo*>         masterServerList;             //!< list of all master servers in the network (should be 1!! :D)
 
