@Override
public Socket createTargetSideConnection(final String targetId, final Socket controlConnection,
final Message connectioRequestMessage) throws ConnectionNotEstablishedException {
Socket socket = new Socket();
try {
final RelayingClient targetRelayClient = new RelayingClient(this.relayAddress);
final InetSocketAddress endpointAtRelay = this.createAllocationAtRelayServer(targetRelayClient);
logger.debug("Allocation at relay server created: {}", endpointAtRelay.toString());
this.sendConnectionRequestResponse(controlConnection, connectioRequestMessage, endpointAtRelay);
socket = targetRelayClient.accept();
} catch (final Exception e) {
logger.error(e.getMessage());
throw new ConnectionNotEstablishedException(this.metaData.getTraversalTechniqueName(),
"Could not create target-side conenction.", e); //$NON-NLS-1$
}