// we need to make a copy of the original message
Message rconMessage = new Message();
rconMessage.sender(message.sender());
rconMessage.version(message.version());
// store the message id in the payload to get the cached message later
rconMessage.intValue(message.messageId());
// the message must have set the keepAlive Flag true. If not, the relay
// peer will close the PeerConnection to the unreachable peer.
rconMessage.keepAlive(true);
// making the message ready to send
PeerAddress recipient = message.recipient().changeAddress(socketAddress.inetAddress())