/* wrapper function for auth thread to authenticate new listener * connection details */ static void auth_new_listener (auth_t *auth, auth_client *auth_user) { client_t *client = auth_user->client; /* make sure there is still a client at this point, a slow backend request * can be avoided if client has disconnected */ if (is_listener_connected (client) == 0) { ICECAST_LOG_DEBUG("listener is no longer connected"); client->respcode = 400; auth_release (client->auth); client->auth = NULL; return; } if (auth->authenticate) { if (auth->authenticate (auth_user) != AUTH_OK) { auth_release (client->auth); client->auth = NULL; return; } } if (auth_postprocess_listener (auth_user) < 0) { auth_release (client->auth); client->auth = NULL; ICECAST_LOG_INFO("client %lu failed", client->con->id); } }
/* wrapper function for auth thread to authenticate new listener * connection details */ static void auth_new_listener (auth_client *auth_user) { client_t *client = auth_user->client; /* make sure there is still a client at this point, a slow backend request * can be avoided if client has disconnected */ if (allow_auth == 0 || is_listener_connected (client) == 0) { DEBUG0 ("dropping listener connection"); client->respcode = 400; return; } if (auth_user->auth->authenticate) { switch (auth_user->auth->authenticate (auth_user)) { case AUTH_OK: case AUTH_FAILED: break; default: return; } } if (auth_postprocess_listener (auth_user) < 0) DEBUG0 ("listener connection failed"); }