{
struct proxy *be = NULL;
struct server *srv = NULL;
- struct bind_conf *bind_conf;
char *name = rule->arg.attach_srv.srvname;
struct ist be_name, sv_name;
return 0;
}
- list_for_each_entry(bind_conf, &px->conf.bind, by_fe) {
- if ((bind_conf->mux_proto && !isteqi(bind_conf->mux_proto->token, ist("h2")))
-#ifdef USE_OPENSSL
- || (bind_conf->ssl_conf.alpn_str && strcmp(bind_conf->ssl_conf.alpn_str, "\x02h2") != 0)
-#endif
- ) {
- memprintf(err, "attach-srv rule: incompatible with listener on %s:%d which uses protocol other than HTTP/2",
- bind_conf->file, bind_conf->line);
- return 0;
- }
- }
-
sv_name = ist(name);
be_name = istsplit(&sv_name, '/');
if (!istlen(sv_name)) {
return 0;
}
- if ((srv->mux_proto && !isteqi(srv->mux_proto->token, ist("h2")))
-#ifdef USE_OPENSSL
- || (srv->ssl_ctx.alpn_str && strcmp(srv->ssl_ctx.alpn_str, "\x02h2") != 0)
-#endif
- ) {
- memprintf(err, "attach-srv rule: incompatible with server '%s:%s' which uses protocol other than HTTP/2",
- ist0(be_name), ist0(sv_name));
- return 0;
- }
-
if ((rule->arg.attach_srv.name && (!srv->use_ssl || !srv->sni_expr)) ||
(!rule->arg.attach_srv.name && srv->use_ssl && srv->sni_expr)) {
memprintf(err, "attach-srv rule: connection will never be used; either specify name argument in conjonction with defined SSL SNI on targetted server or none of these");