diff --git a/src/dns.c b/src/dns.c index c97c7dc69..333780293 100644 --- a/src/dns.c +++ b/src/dns.c @@ -648,6 +648,9 @@ static void dns_check_dns_response(struct dns_resolution *res) if (msg) send_log(srv->proxy, LOG_NOTICE, "%s", msg); + /* now we have an IP address associated to this server, we can update its status */ + snr_update_srv_status(srv, 0); + srv->svc_port = item->port; srv->flags &= ~SRV_F_MAPPORTS; if ((srv->check.state & CHK_ST_CONFIGURED) && diff --git a/src/server.c b/src/server.c index 918294b2f..3f26104cc 100644 --- a/src/server.c +++ b/src/server.c @@ -3733,6 +3733,12 @@ int snr_update_srv_status(struct server *s, int has_no_ip) /* If resolution is NULL we're dealing with SRV records Additional records */ if (resolution == NULL) { + /* since this server has an IP, it can go back in production */ + if (has_no_ip == 0) { + srv_clr_admin_flag(s, SRV_ADMF_RMAINT); + return 1; + } + if (s->next_admin & SRV_ADMF_RMAINT) return 1;