# HG changeset patch # User Olaf Wintermann # Date 1485296388 -3600 # Node ID a0c8e752490dee47dc9871113ec9b81b1ca36540 # Parent 36cd2e280386cb8b919303cc81cb61c47c663965 adds pblock operations to set-variable saf diff -r 36cd2e280386 -r a0c8e752490d src/server/safs/common.c --- a/src/server/safs/common.c Tue Jan 24 17:36:28 2017 +0100 +++ b/src/server/safs/common.c Tue Jan 24 23:19:48 2017 +0100 @@ -38,7 +38,7 @@ static UcxMap *var_names; enum SAFVarNames { - COMMONSAF_INSERT_CLIENT = 0, + COMMONSAF_INSERT_CLIENT = 1, COMMONSAF_INSERT_VARS, COMMONSAF_INSERT_REQPB, COMMONSAF_INSERT_HEADERS, @@ -74,7 +74,7 @@ #define COMMONSAF_RET_ERROR -2 void common_saf_init() { - var_names = ucx_map_new(12); + var_names = ucx_map_new(32); ucx_map_cstr_put(var_names, "insert-client", (intptr_t)COMMONSAF_INSERT_CLIENT); ucx_map_cstr_put(var_names, "insert-vars", (intptr_t)COMMONSAF_INSERT_VARS); @@ -114,25 +114,53 @@ return REQ_NOACTION; } +static void var_set(char *value, pblock *pb, WSBool insert) { + sstr_t n; + sstr_t v; + v.ptr = NULL; + + n.ptr = value; + int i; + int len = strlen(value); + for(i=1;iclient, TRUE); break; + case COMMONSAF_INSERT_VARS: var_set(value, rq->vars, TRUE); break; + case COMMONSAF_INSERT_REQPB: var_set(value, rq->reqpb, TRUE); break; + case COMMONSAF_INSERT_HEADERS: var_set(value, rq->headers, TRUE); break; + case COMMONSAF_INSERT_SRVHDRS: var_set(value, rq->srvhdrs, TRUE); break; + case COMMONSAF_SET_CLIENT: var_set(value, sn->client, FALSE); break; + case COMMONSAF_SET_VARS: var_set(value, rq->vars, FALSE); break; + case COMMONSAF_SET_REQPB: var_set(value, rq->reqpb, FALSE); break; + case COMMONSAF_SET_HEADERS: var_set(value, rq->headers, FALSE); break; + case COMMONSAF_SET_SRVHDRS: var_set(value, rq->srvhdrs, FALSE); break; + case COMMONSAF_REMOVE_CLIENT: pblock_remove(value, sn->client); break; + case COMMONSAF_REMOVE_VARS: pblock_remove(value, rq->vars); break; + case COMMONSAF_REMOVE_HEADERS: pblock_remove(value, rq->headers);break; + case COMMONSAF_REMOVE_SRVHDRS: pblock_remove(value, rq->srvhdrs); break; case COMMONSAF_ABORT: return COMMONSAF_REQ_ABORTED; case COMMONSAF_ERROR: { return COMMONSAF_REQ_ABORTED;