From e6c818f070022529c362e42dfed340f54b2fd26e Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Thu, 8 May 2008 22:17:49 +0000 Subject: [PATCH] viced-avoid-infinite-loop-with-altaddr-unset-20080508 LICENSE IPL10 if we return leaving a non HOSTDELETED host while it does not have ALTADDR set, a loop can happen. avoid it by simply setting ALTADDR again when we're done, if we believe some addresses are still good this is fine. --- src/viced/host.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/viced/host.c b/src/viced/host.c index 28ba0e1b5..66598ed8c 100644 --- a/src/viced/host.c +++ b/src/viced/host.c @@ -1566,6 +1566,7 @@ h_GetHost_r(struct rx_connection *tcon) */ removeAddress_r(host, haddr, hport); host->hostFlags &= ~HWHO_INPROGRESS; + host->hostFlags |= ALTADDR; h_Unlock_r(host); if (!held) h_Release_r(host); @@ -1601,6 +1602,7 @@ h_GetHost_r(struct rx_connection *tcon) removeAddress_r(host, host->host, host->port); } host->hostFlags &= ~HWHO_INPROGRESS; + host->hostFlags |= ALTADDR; h_Unlock_r(host); if (!held) h_Release_r(host); @@ -1670,6 +1672,7 @@ h_GetHost_r(struct rx_connection *tcon) afs_inet_ntoa_r(haddr, hoststr), ntohs(hport), code)); removeAddress_r(host, haddr, hport); host->hostFlags &= ~HWHO_INPROGRESS; + host->hostFlags |= ALTADDR; h_Unlock_r(host); if (!held) h_Release_r(host); -- 2.39.5