private void forwardReversalRequestToTarget(final Socket toSource, final UserData user,
final Message connectionRequestFromSource) throws IOException {
final Message connectionRequest = MessageStaticFactory.newSTUNMessageInstance(STUNMessageClass.REQUEST,
STUNMessageMethod.CONNECTION_REQUEST, connectionRequestFromSource.getHeader().getTransactionId());
XorMappedAddress clientAddress;
if (toSource.getInetAddress() instanceof Inet6Address) {
clientAddress = new XorMappedAddress(new InetSocketAddress(toSource.getInetAddress(), toSource.getPort()),
ByteBuffer.wrap(connectionRequest.getHeader().getTransactionId()).getInt());
} else {
clientAddress = new XorMappedAddress(new InetSocketAddress(toSource.getInetAddress(), toSource.getPort()));
}
connectionRequest.addAttribute(clientAddress);
connectionRequest.addAttribute(new EndpointClass(EndpointCategory.PUBLIC));
connectionRequest.addAttribute(new ReversalAttribute());
final Socket toTarget = user.getSocketToUser();