diff options
author | Omar Polo <op@omarpolo.com> | 2022-01-01 19:04:50 +0000 |
---|---|---|
committer | Omar Polo <op@omarpolo.com> | 2022-01-01 19:04:50 +0000 |
commit | c7c8ef448bc8832998606ec217907c7dc66fec6c (patch) | |
tree | 2d935588f4ba9c3a4dac7a8cc0f028ea1c6351ee | |
parent | 5128c0b0e3b51737783c4c68c9e34a76ec8c8b0e (diff) |
add `protocols' option to `proxy' rule
-rw-r--r-- | gmid.h | 1 | ||||
-rw-r--r-- | parse.y | 12 | ||||
-rw-r--r-- | proxy.c | 2 |
3 files changed, 13 insertions, 2 deletions
@@ -100,6 +100,7 @@ extern struct fcgi fcgi[FCGI_MAX]; struct proxy { char *host; const char *port; + uint32_t protocols; int noverifyname; uint8_t *cert; size_t certlen; @@ -309,6 +309,12 @@ proxy_opt : CERT string { if (p->key == NULL) yyerror("can't load key %s", $2); } + | PROTOCOLS string { + struct proxy *p = &host->proxy; + + if (tls_config_parse_protocols(&p->protocols, $2) == -1) + yyerror("invalid protocols string \"%s\"", $2); + } | RELAY_TO string { char *at; const char *errstr; @@ -961,7 +967,11 @@ symget(const char *nam) struct vhost * new_vhost(void) { - return xcalloc(1, sizeof(struct vhost)); + struct vhost *v; + + v = xcalloc(1, sizeof(*v)); + v->proxy.protocols = TLS_PROTOCOLS_DEFAULT; + return v; } struct location * @@ -295,8 +295,8 @@ proxy_init(struct client *c) if (p->noverifyname) tls_config_insecure_noverifyname(conf); - /* TODO: tls_config_set_protocols here */ tls_config_insecure_noverifycert(conf); + tls_config_set_protocols(conf, p->protocols); if (p->cert != NULL) { int r; |