private void forwardConnectionRequest(final UserData target, final Message connectionRequestFromSource,
final Socket controlConnectionToSource) throws Exception {
final Socket toTarget = target.getSocketToUser();
final Message connectionRequest = MessageStaticFactory.newSTUNMessageInstance(STUNMessageClass.REQUEST,
STUNMessageMethod.CONNECTION_REQUEST, connectionRequestFromSource.getHeader().getTransactionId());
connectionRequest.addAttribute(new HolePunchingAttribute());
connectionRequest.addAttribute(connectionRequestFromSource.getAttribute(Token.class));
// public endpoint
connectionRequest.addAttribute(this.createXorMappedAddressFromSocket(controlConnectionToSource,
connectionRequest.getHeader().getTransactionId()));
// private endpoint