public void handleMessage(final Message registerMessage, final Socket controlConnection) throws Exception {
this.checkForRequiredAttributes(registerMessage);
final UserData newUser = this.createNewUserWithRequiredAttributes(registerMessage, controlConnection);
newUser.addEndpoint(this.getPublicEndpointFromSocket(controlConnection));
if (registerMessage.hasAttribute(XorMappedAddress.class)) {
newUser.addEndpoint(this.createEndpointFromAttributes(registerMessage));
}
this.userList.addOrUpdateUser(newUser);
logger.debug("User {} added or updated", newUser.getUserId()); //$NON-NLS-1$
this.sendSuccessResponse(registerMessage, controlConnection);
}