private void handleConnectionRequest(final Message message, final Socket controlConnection) throws Exception {
this.mediatorUtil.checkForAttribute(message, Username.class);
this.mediatorUtil.checkForAttribute(message, XorMappedAddress.class);
this.connectionRequests.putConnectionRequest(new ConnectionRequest(controlConnection, message));
final Username username = message.getAttribute(Username.class);
final UserData user = this.userList.getUserDataByUserId(username.getUsernameAsString());
if (user == null) {
final String errorMessage = "User " + username.getUsernameAsString() + " not exists"; //$NON-NLS-1$ //$NON-NLS-2$
this.sendFailureResponse(message, errorMessage, STUNErrorCode.BAD_REQUEST,
controlConnection.getOutputStream());
} else {
this.forwardConnectionRequest(user, message, controlConnection);
// this.sendHPMessagesToPeers(user, message, controlConnection);