ha_free(&srv->hostname_dn);
srv->hostname_dn_len = 0;
memset(&srv_addr, 0, sizeof(srv_addr));
- /* unset server's addr */
+ /* unset server's addr AND port */
server_set_inetaddr(srv, &srv_addr, SERVER_INETADDR_UPDATER_NONE, NULL);
srv->flags |= SRV_F_NO_RESOLUTION;
if (has_no_ip && !snr_set_srv_down(s)) {
struct server_inetaddr srv_addr;
- memset(&srv_addr, 0, sizeof(srv_addr));
- /* unset server's addr */
+ /* unset server's addr, keep port */
+ server_get_inetaddr(s, &srv_addr);
+ memset(&srv_addr.addr, 0, sizeof(srv_addr.addr));
server_set_inetaddr(s, &srv_addr, SERVER_INETADDR_UPDATER_NONE, NULL);
}
return 1;
if (has_no_ip && !snr_set_srv_down(s)) {
struct server_inetaddr srv_addr;
- memset(&srv_addr, 0, sizeof(srv_addr));
- /* unset server's addr */
+ /* unset server's addr, keep port */
+ server_get_inetaddr(s, &srv_addr);
+ memset(&srv_addr.addr, 0, sizeof(srv_addr.addr));
server_set_inetaddr(s, &srv_addr, SERVER_INETADDR_UPDATER_NONE, NULL);
}
return 0;
if (!snr_set_srv_down(s)) {
struct server_inetaddr srv_addr;
- memset(&srv_addr, 0, sizeof(srv_addr));
- /* unset server's addr */
+ /* unset server's addr, keep port */
+ server_get_inetaddr(s, &srv_addr);
+ memset(&srv_addr.addr, 0, sizeof(srv_addr.addr));
server_set_inetaddr(s, &srv_addr, SERVER_INETADDR_UPDATER_NONE, NULL);
HA_SPIN_UNLOCK(SERVER_LOCK, &s->lock);
resolv_detach_from_resolution_answer_items(requester->resolution, requester);