# HG changeset patch # User Olaf Wintermann # Date 1485447791 -3600 # Node ID 389bd0e1ffa9325ff5e4cb3d4edb6b34a879e687 # Parent a0c8e752490dee47dc9871113ec9b81b1ca36540 adds set-variable error diff -r a0c8e752490d -r 389bd0e1ffa9 src/server/safs/common.c --- a/src/server/safs/common.c Tue Jan 24 23:19:48 2017 +0100 +++ b/src/server/safs/common.c Thu Jan 26 17:23:11 2017 +0100 @@ -162,7 +162,31 @@ 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_NOACTION: return COMMONSAF_RET_NOACTION; case COMMONSAF_ERROR: { + int len = strlen(value); + WSBool isnum = TRUE; + int i; + for(i=0;i 999 || !ret) { + log_ereport( + LOG_MISCONFIG, + "set-variable: error value must contain a 3-digit http status code"); + protocol_status(sn, rq, 500, NULL); + return COMMONSAF_RET_ERROR; + } + + char *msg = isnum ? NULL : sstrtrim(sstr(value + i)).ptr; + protocol_status(sn, rq, (int)status, msg); + return COMMONSAF_REQ_ABORTED; } case COMMONSAF_ESCAPE: break; @@ -173,7 +197,10 @@ rq->rq_attr.keep_alive = util_getboolean(var, 0); break; } - case COMMONSAF_NAME: break; + case COMMONSAF_NAME: { + pblock_kvinsert(pb_key_name, value, strlen(value), rq->vars); + break; + } case COMMONSAF_SENTHDRS: break; case COMMONSAF_STOP: return COMMONSAF_RET_STOP; case COMMONSAF_URL: break;