diff --git a/src/admin.c b/src/admin.c index ce589504..9ef7f0bb 100644 --- a/src/admin.c +++ b/src/admin.c @@ -253,9 +253,9 @@ xmlDocPtr admin_build_sourcelist (const char *mount) config = config_get_config(); mountinfo = config_find_mount (config, source->mount, MOUNT_TYPE_NORMAL); if (mountinfo) - acl = auth_stack_get_anonymous_acl(mountinfo->authstack); + acl = auth_stack_get_anonymous_acl(mountinfo->authstack, httpp_req_get); if (!acl) - auth_stack_get_anonymous_acl(config->authstack); + acl = auth_stack_get_anonymous_acl(config->authstack, httpp_req_get); if (acl && acl_test_web(acl) == ACL_POLICY_DENY) { xmlNewChild(srcnode, NULL, XMLSTR("authenticator"), XMLSTR("(dummy)")); } diff --git a/src/auth.c b/src/auth.c index a66635c6..a37265ce 100644 --- a/src/auth.c +++ b/src/auth.c @@ -727,17 +727,17 @@ auth_t *auth_stack_getbyid(auth_stack_t *stack, unsigned long id) { } -acl_t *auth_stack_get_anonymous_acl(auth_stack_t *stack) { +acl_t *auth_stack_get_anonymous_acl(auth_stack_t *stack, httpp_request_type_e method) { acl_t *ret = NULL; - if (!stack) + if (!stack || method < 0 || method > httpp_req_unknown) return NULL; auth_stack_addref(stack); while (!ret && stack) { auth_t *auth = auth_stack_get(stack); - if (strcmp(auth->type, AUTH_TYPE_ANONYMOUS) == 0) { + if (auth->method[method] && strcmp(auth->type, AUTH_TYPE_ANONYMOUS) == 0) { acl_addref(ret = auth->acl); } auth_release(auth); diff --git a/src/auth.h b/src/auth.h index 3a4e724d..9c086f17 100644 --- a/src/auth.h +++ b/src/auth.h @@ -135,6 +135,6 @@ int auth_stack_push(auth_stack_t **stack, auth_t *auth); int auth_stack_append(auth_stack_t *stack, auth_stack_t *tail); auth_t *auth_stack_get(auth_stack_t *stack); auth_t *auth_stack_getbyid(auth_stack_t *stack, unsigned long id); -acl_t *auth_stack_get_anonymous_acl(auth_stack_t *stack); +acl_t *auth_stack_get_anonymous_acl(auth_stack_t *stack, httpp_request_type_e method); #endif diff --git a/src/source.c b/src/source.c index ea8f010d..d19c0fec 100644 --- a/src/source.c +++ b/src/source.c @@ -1118,9 +1118,9 @@ static void source_apply_mount (ice_config_t *config, source_t *source, mount_pr stats_event (source->mount, "subtype", mountinfo->subtype); if (mountinfo) - acl = auth_stack_get_anonymous_acl(mountinfo->authstack); + acl = auth_stack_get_anonymous_acl(mountinfo->authstack, httpp_req_get); if (!acl) - auth_stack_get_anonymous_acl(config->authstack); + acl = auth_stack_get_anonymous_acl(config->authstack, httpp_req_get); if (acl && acl_test_web(acl) == ACL_POLICY_DENY) stats_event (source->mount, "authenticator", "(dummy)"); else