Index: branches/proxy/src/lib/network/message_manager.cc
===================================================================
--- branches/proxy/src/lib/network/message_manager.cc	(revision 9521)
+++ branches/proxy/src/lib/network/message_manager.cc	(revision 9522)
@@ -227,9 +227,43 @@
          outgoingMessageQueue[userId].recievedMessages.end() )
     {
+
+//       RT_ALL_BUT_ME = 1,   //!< message is sent to all users but myself
+//       RT_ALL_ME,           //!< message is sent to all users
+//       RT_USER,             //!< message is only sent to reciever
+//       RT_NOT_USER,         //!< message is sent to all but reciever
+//       RT_SERVER
+
+      // find out if this message is addressed for this client too
+      if( messageType == RT_ALL_BUT_ME ||
+          messageType == RT_ALL_ME ||
+          messageType == RT_USER  && SharedNetworkData::getInstance()->getHostID() == destinationId ||
+          messageType == RT_SERVER && SharedNetworkData::getInstance()->isMasterServer())
+      {
+
       // call the handler function and handle errors
-      if ( !(*(messageHandlerMap[(MessageType)messageType].cb))( (MessageType)messageType, data + i, messageLength,
-                                                                 messageHandlerMap[(MessageType)messageType].someData, senderId, destinationId ) )
+        if ( !(*(messageHandlerMap[(MessageType)messageType].cb))( (MessageType)messageType, data + i, messageLength,
+                 messageHandlerMap[(MessageType)messageType].someData, senderId, destinationId ) )
+        {
+        // if the message is not handled correctly, bush it back to the incoming packets
+          NetworkMessage msg;
+
+          msg.data = new byte[messageLength];
+          memcpy( msg.data, data + i, messageLength );
+          msg.length = messageLength;
+          msg.messageType = (MessageType)messageType;
+          msg.number = userId;
+          msg.senderId = senderId;
+          msg.destinationId = destinationId;
+
+          incomingMessageQueue.push_back( msg );
+        }
+      // save the serial number for ack signaling
+        outgoingMessageQueue[userId].recievedMessages.push_back( number );
+        PRINTF(0)("<<< MessageManager: got msg with type: %i, from sender %i, to rec: %i\n", messageType, senderId, destinationId);
+      }
+      // or else forward the message to the other servers
+      else
       {
-        // if the message is not handled correctly, bush it back to the incoming packets
+        PRINTF(0)("===========>> Forwarding Message\n");
         NetworkMessage msg;
 
@@ -244,8 +278,6 @@
         incomingMessageQueue.push_back( msg );
       }
-      // save the serial number for ack signaling
-      outgoingMessageQueue[userId].recievedMessages.push_back( number );
-      PRINTF(0)("<<< MessageManager: got msg with type: %i\n", messageType);
-    }
+    }
+
     i += messageLength;
   }
Index: branches/proxy/src/lib/network/network_game_manager.cc
===================================================================
--- branches/proxy/src/lib/network/network_game_manager.cc	(revision 9521)
+++ branches/proxy/src/lib/network/network_game_manager.cc	(revision 9522)
@@ -217,5 +217,5 @@
   assert( Converter::intToByteArray( uniqueId, buf, INTSIZE ) == INTSIZE );
 
-  MessageManager::getInstance()->sendMessage( MSGID_DELETESYNCHRONIZEABLE, buf, INTSIZE, RT_ALL_BUT_ME, 0, MP_HIGHBANDWIDTH );
+  MessageManager::getInstance()->sendMessage( MSGID_DELETESYNCHRONIZEABLE, buf, INTSIZE, RT_ALL_BUT_ME, NET_UNASSIGNED, MP_HIGHBANDWIDTH );
 }
 
@@ -319,5 +319,5 @@
   if ( (SharedNetworkData::getInstance()->isMasterServer() /*|| SharedNetworkData::getInstance()->isProxyServerActive()*/) && senderId !=  SharedNetworkData::getInstance()->getHostID() )
   {
-    MessageManager::getInstance()->sendMessage( messageType, data, dataLength, RT_ALL_BUT_ME, 0, MP_HIGHBANDWIDTH );
+    MessageManager::getInstance()->sendMessage( messageType, data, dataLength, RT_ALL_BUT_ME, NET_UNASSIGNED, MP_HIGHBANDWIDTH );
   }
 
@@ -360,7 +360,7 @@
 
   if ( SharedNetworkData::getInstance()->isMasterServer() /*|| SharedNetworkData::getInstance()->isProxyServerActive()*/)
-    MessageManager::getInstance()->sendMessage( MSGID_CHATMESSAGE, buf, message.length()+3*INTSIZE, RT_ALL_ME, 0, MP_HIGHBANDWIDTH );
+    MessageManager::getInstance()->sendMessage( MSGID_CHATMESSAGE, buf, message.length()+3*INTSIZE, RT_ALL_ME, NET_UNASSIGNED, MP_HIGHBANDWIDTH );
   else
-    MessageManager::getInstance()->sendMessage( MSGID_CHATMESSAGE, buf, message.length()+3*INTSIZE, RT_ALL_BUT_ME, 0, MP_HIGHBANDWIDTH );
+    MessageManager::getInstance()->sendMessage( MSGID_CHATMESSAGE, buf, message.length()+3*INTSIZE, RT_ALL_BUT_ME, NET_UNASSIGNED, MP_HIGHBANDWIDTH );
 
 
Index: branches/proxy/src/lib/network/player_stats.cc
===================================================================
--- branches/proxy/src/lib/network/player_stats.cc	(revision 9521)
+++ branches/proxy/src/lib/network/player_stats.cc	(revision 9522)
@@ -207,5 +207,5 @@
     assert( Converter::stringToByteArray( nick, data, nick.length()+INTSIZE) == nick.length()+INTSIZE );
 
-    MessageManager::getInstance()->sendMessage( MSGID_CHANGENICKNAME, data, nick.length()+INTSIZE, RT_SERVER, 0, MP_HIGHBANDWIDTH );
+    MessageManager::getInstance()->sendMessage( MSGID_CHANGENICKNAME, data, nick.length()+INTSIZE, RT_SERVER, NET_MASTER_SERVER, MP_HIGHBANDWIDTH );
     return;
   }
