diff -r 85721a583f39 -r 14ae3d8c01ae src/server/safs/pathcheck.c --- a/src/server/safs/pathcheck.c Sun Nov 23 13:27:13 2025 +0100 +++ b/src/server/safs/pathcheck.c Sun Nov 23 13:45:55 2025 +0100 @@ -36,6 +36,7 @@ #include "../daemon/acldata.h" #include "../daemon/session.h" #include "../daemon/vserver.h" +#include "../daemon/request.h" #include "../daemon/vfs.h" @@ -89,23 +90,25 @@ return REQ_PROCEED; } -int append_acl(pblock *pb, Session *sn, Request *rq) { +static int add_acl(Session *sn, Request *rq, const char *aclname) { const VirtualServer *vs = request_get_vs(rq); - - WS_ASSERT(vs); - + ACLList *acl = acl_get(vs->acls, aclname); + if(!acl) { + log_ereport( + LOG_MISCONFIG, + "append-acl: acl %s not found", aclname); + return 1; + } + return acllist_append(sn, rq, acl); +} + +int append_acl(pblock *pb, Session *sn, Request *rq) { char *aclname = pblock_findval("acl", pb); if(aclname) { - ACLList *acl = acl_get(vs->acls, aclname); - if(!acl) { - log_ereport( - LOG_MISCONFIG, - "append-acl: acl %s not found", aclname); + if(add_acl(sn, rq, aclname)) { protocol_status(sn, rq, 500, NULL); return REQ_ABORTED; } - - acllist_append(sn, rq, acl); } return REQ_PROCEED; @@ -208,3 +211,24 @@ return REQ_PROCEED; } + +int apply_location_config(pblock *pb, Session *sn, Request *rq) { + NSAPIRequest *req = (NSAPIRequest*)rq; + WSLocationConfig *config = req->location; + if(!config) { + return REQ_NOACTION; + } + + if(config->set_forcetls && config->forcetls) { + // TODO + } + + CxIterator i = cxListIterator(config->acls); + cx_foreach(char*, aclname, i) { + if(add_acl(sn, rq, aclname)) { + return REQ_ABORTED; + } + } + + return REQ_PROCEED; +}