diff options
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | lex.l | 1 | ||||
-rw-r--r-- | parse.y | 36 |
3 files changed, 29 insertions, 10 deletions
@@ -1,5 +1,7 @@ 2021-06-11 Omar Polo <op@omarpolo.com> + * parse.y (servopt): add `param' keyword + * fcgi.c (send_fcgi_req): send GATEWAY_INTERFACE, AUTH_TYPE, REMOTE_USER, TLS_CLIENT_ISSUER, TLS_CLIENT_HASH, TLS_VERSION, TLS_CIPHER, TLS_CIPHER_STRENGTH and TLS_CLIENT_NOT_BEFORE/AFTER. @@ -70,6 +70,7 @@ lang return TLANG; location return TLOCATION; log return TLOG; mime return TMIME; +param return TPARAM; port return TPORT; prefork return TPREFORK; protocols return TPROTOCOLS; @@ -49,6 +49,7 @@ void advance_loc(void); void only_once(const void*, const char*); void only_oncei(int, const char*); int fastcgi_conf(char *, char *, char *); +void add_param(char *, char *, int); %} @@ -63,7 +64,7 @@ int fastcgi_conf(char *, char *, char *); %token TIPV6 TPORT TPROTOCOLS TMIME TDEFAULT TTYPE TCHROOT TUSER TSERVER %token TPREFORK TLOCATION TCERT TKEY TROOT TCGI TENV TLANG TLOG TINDEX TAUTO %token TSTRIP TBLOCK TRETURN TENTRYPOINT TREQUIRE TCLIENT TCA TALIAS TTCP -%token TFASTCGI TSPAWN +%token TFASTCGI TSPAWN TPARAM %token TERR @@ -150,20 +151,15 @@ servopt : TALIAS TSTRING { host->entrypoint = $2; } | TENV TSTRING TSTRING { - struct envlist *e; - - e = xcalloc(1, sizeof(*e)); - e->name = $2; - e->value = $3; - if (TAILQ_EMPTY(&host->env)) - TAILQ_INSERT_HEAD(&host->env, e, envs); - else - TAILQ_INSERT_TAIL(&host->env, e, envs); + add_param($2, $3, 1); } | TKEY TSTRING { only_once(host->key, "key"); host->key = ensure_absolute_path($2); } + | TPARAM TSTRING TSTRING { + add_param($2, $3, 0); + } | locopt ; @@ -422,3 +418,23 @@ fastcgi_conf(char *path, char *port, char *prog) yyerror("too much `fastcgi' rules defined."); return -1; } + +void +add_param(char *name, char *val, int env) +{ + struct envlist *e; + struct envhead *h; + + if (env) + h = &host->env; + else + h = &host->params; + + e = xcalloc(1, sizeof(*e)); + e->name = name; + e->value = val; + if (TAILQ_EMPTY(h)) + TAILQ_INSERT_HEAD(h, e, envs); + else + TAILQ_INSERT_TAIL(h, e, envs); +} |