Index: branches/proxy/src/lib/network/message_manager.cc
===================================================================
--- branches/proxy/src/lib/network/message_manager.cc	(revision 9561)
+++ branches/proxy/src/lib/network/message_manager.cc	(revision 9562)
@@ -291,5 +291,5 @@
           msg.recieverType = (RecieverType)recieverType;
 
-          this->sendMessage(msg.messageType, msg.data, msg.length, msg.recieverType, msg.destinationId, MP_HIGHBANDWIDTH);
+          this->sendMessage(msg.messageType, msg.data, msg.length, msg.recieverType, msg.senderId = senderId, msg.destinationId, MP_HIGHBANDWIDTH);
         }
       }
@@ -396,4 +396,6 @@
 }
 
+
+
 /**
  * send a message to one or more clients
@@ -411,4 +413,24 @@
 void MessageManager::sendMessage( MessageType messageType, byte * data, int dataLength, RecieverType recieverType, int reciever, MessagePriority messagePriority )
 {
+  this->sendMessage(messageType, data, dataLength, recieverType, SharedNetworkData::getInstance()->getHostID(), reciever, messagePriority);
+}
+
+
+/**
+ * send a message to one or more clients as a special client
+ * recieverType:
+ *               RT_ALL send to all users. reciever is ignored
+ *               RT_USER send only to reciever
+ *               RT_NOT_USER send to all but reciever
+ *
+ * @param messageType message id
+ * @param data pointer to data
+ * @param dataLength length of data
+ * @param recieverType type of the receiver
+ * @param sender the userId of the sender if there is need for shadowing it (eg. for msg forwarding)
+ * @param reciever the userId of the receiver if needed (depends on the ReceiverType)
+ */
+    void MessageManager::sendMessage( MessageType messageType, byte * data, int dataLength, RecieverType recieverType, int sender, int reciever, MessagePriority messagePriority )
+{
   PRINTF(0)(" >>> MessageManager: sending msg with type: %i, recieverType: %i, reciever %i\n", messageType, recieverType, reciever);
 
@@ -417,40 +439,5 @@
   {
 
-    // relay server special handling
-//     if( SharedNetworkData::getInstance()->isMasterServer() && SharedNetworkData::getInstance()->isUserProxyServerActive(it->first))
-//     {
-//       NetworkMessage msg;
-//
-//       msg.data = new byte[dataLength];
-//       memcpy( msg.data, data, dataLength );
-//       msg.length = dataLength;
-//       msg.messageType = messageType;
-//       msg.number = this->newNumber++;
-//       msg.senderId = SharedNetworkData::getInstance()->getHostID();
-//       msg.destinationId = reciever;
-//       msg.recieverType = recieverType;
-//       msg.priority = messagePriority;
-//
-//       it->second.messages.push_back( msg );
-//     }
-//     // proxy server to master server
-//     else if( SharedNetworkData::getInstance()->isProxyServerActive() && SharedNetworkData::getInstance()->isUserMasterServer(it->first))
-//     {
-//       NetworkMessage msg;
-//
-//       msg.data = new byte[dataLength];
-//       memcpy( msg.data, data, dataLength );
-//       msg.length = dataLength;
-//       msg.messageType = messageType;
-//       msg.number = this->newNumber++;
-//       msg.senderId = SharedNetworkData::getInstance()->getHostID();
-//       msg.destinationId = reciever;
-//       msg.recieverType = recieverType;
-//       msg.priority = messagePriority;
-//
-//       it->second.messages.push_back( msg );
-//     }
-    // check for every node if the message is for it also
-    /*else*/ if (
+    if (
          recieverType == RT_ALL_ME ||
          recieverType == RT_ALL_BUT_ME ||
@@ -468,5 +455,5 @@
       msg.messageType = messageType;
       msg.number = this->newNumber++;
-      msg.senderId = SharedNetworkData::getInstance()->getHostID();
+      msg.senderId = sender;
       msg.destinationId = reciever;
       msg.recieverType = recieverType;
@@ -490,5 +477,5 @@
     msg.messageType = messageType;
     msg.number = SharedNetworkData::getInstance()->getHostID();
-    msg.senderId = SharedNetworkData::getInstance()->getHostID();
+    msg.senderId = sender;
     msg.destinationId = reciever;
     msg.recieverType = recieverType;
Index: branches/proxy/src/lib/network/message_manager.h
===================================================================
--- branches/proxy/src/lib/network/message_manager.h	(revision 9561)
+++ branches/proxy/src/lib/network/message_manager.h	(revision 9562)
@@ -103,4 +103,5 @@
 
    void sendMessage( MessageType messageType, byte * data, int dataLength, RecieverType recieverType, int reciever, MessagePriority messagePriority );
+   void sendMessage( MessageType messageType, byte * data, int dataLength, RecieverType recieverType, int sender, int reciever, MessagePriority messagePriority );
 
    void initUser( int userId );
