From 6fb8192b28a90d75cb1c40f8ad472c72ff335a66 Mon Sep 17 00:00:00 2001 From: Baptiste Assmann Date: Mon, 14 Aug 2017 16:35:45 +0200 Subject: [PATCH] MINOR: dns: enable caching of responses for server set by a SRV record The function srv_set_fqdn() is used to update a server's fqdn and set accordingly its DNS resolution. Current implementation prevents a server whose update is triggered by a SRV record from being linked to an existing resolution in the cache (if applicable). This patch aims at fixing this. --- src/server.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/server.c b/src/server.c index cfbdb3d71..caf84c6ae 100644 --- a/src/server.c +++ b/src/server.c @@ -4133,9 +4133,14 @@ int srv_set_fqdn(struct server *srv, const char *hostname) /* first, we need to unlink our server from its current resolution */ srv_free_from_resolution(srv); } else { - resolution = srv->resolution; - resolution->last_resolution = now_ms; - did_set_reso = 1; + /* this server's fqdn has been set by a SRV record */ + resolution = dns_resolution_list_get(srv->resolvers, trash.str, srv->dns_requester->prefered_query_type); + srv_free_from_resolution(srv); + srv->resolution = resolution; + if (resolution->hostname_dn == NULL) { + resolution->last_resolution = now_ms; + did_set_reso = 1; + } } /* now we update server's parameters */