diff --git a/src/check.c b/src/check.c index 3d03d6aa8..c994108ac 100644 --- a/src/check.c +++ b/src/check.c @@ -1574,7 +1574,7 @@ void free_check(struct check *check) } ha_free(&check->pool_conn_name); - + ha_free(&check->alpn_str); task_destroy(check->task); check_release_buf(check, &check->bi); diff --git a/src/server.c b/src/server.c index d4ae2e895..ccaa1665a 100644 --- a/src/server.c +++ b/src/server.c @@ -2901,8 +2901,15 @@ void srv_settings_cpy(struct server *srv, const struct server *src, int srv_tmpl srv->check.use_ssl = src->check.use_ssl; srv->check.port = src->check.port; srv->check.sni = src->check.sni; - srv->check.alpn_str = src->check.alpn_str; - srv->check.alpn_len = src->check.alpn_len; + if (src->check.alpn_str) { + srv->check.alpn_str = malloc(src->check.alpn_len); + if (srv->check.alpn_str) { + memcpy(srv->check.alpn_str, src->check.alpn_str, + src->check.alpn_len); + srv->check.alpn_len = src->check.alpn_len; + } + } + if (!(srv->flags & SRV_F_RHTTP)) srv->check.reuse_pool = src->check.reuse_pool; if (src->check.pool_conn_name)