From: Christopher Faulet Date: Tue, 15 Jun 2021 14:14:37 +0000 (+0200) Subject: MINOR: resolvers: Remove server from named_servers tree when removing a SRV item X-Git-Tag: v2.5-dev1~87 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=73001ab6e39fb25ff406bbcd3809d0a1fa0131b5;p=thirdparty%2Fhaproxy.git MINOR: resolvers: Remove server from named_servers tree when removing a SRV item When a server is cleaned up because the corresponding SRV item is removed, we always remove the server from the srvrq's name_servers tree. For now, it is useless because, if a server was attached to a SRV item, it means it was already removed from the tree. But it will be mandatory to fix a bug. --- diff --git a/src/resolvers.c b/src/resolvers.c index 69016111b9..8e18faa722 100644 --- a/src/resolvers.c +++ b/src/resolvers.c @@ -588,6 +588,10 @@ static void resolv_srvrq_cleanup_srv(struct server *srv) memset(&srv->addr, 0, sizeof(srv->addr)); srv->svc_port = 0; srv->flags |= SRV_F_NO_RESOLUTION; + + ebpt_delete(&srv->host_dn); + ha_free(&srv->host_dn.key); + HA_SPIN_UNLOCK(SERVER_LOCK, &srv->lock); LIST_DELETE(&srv->srv_rec_item); LIST_APPEND(&srv->srvrq->attached_servers, &srv->srv_rec_item); @@ -685,7 +689,7 @@ static void resolv_check_response(struct resolv_resolution *res) if (srv->svc_port == item->port) { /* server found, we remove it from tree */ ebpt_delete(node); - free(srv->host_dn.key); + ha_free(&srv->host_dn.key); goto srv_found; }