From: Derrick Brashear Date: Thu, 28 Dec 2006 20:36:26 +0000 (+0000) Subject: afsdb-resolver-reinit-20061228 X-Git-Tag: BP-openafs-windows-kdfs-ifs~896 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=fe649aac819839d84e6cecdbccdc5becc36fa968;p=packages%2Fo%2Fopenafs.git afsdb-resolver-reinit-20061228 as reported by Adam Megacz, but my own version of the fix --- diff --git a/src/auth/cellconfig.c b/src/auth/cellconfig.c index a5f8b3aa8..63bd91e2b 100644 --- a/src/auth/cellconfig.c +++ b/src/auth/cellconfig.c @@ -861,6 +861,7 @@ afsconf_GetAfsdbInfo(char *acellName, char *aservice, * operations. */ + retryafsdb: if ( ! strchr(acellName,'.') ) { cellnamelength=strlen(acellName); dotcellname=malloc(cellnamelength+2); @@ -868,7 +869,7 @@ afsconf_GetAfsdbInfo(char *acellName, char *aservice, dotcellname[cellnamelength]='.'; dotcellname[cellnamelength+1]=0; LOCK_GLOBAL_MUTEX; - len = res_search(dotcellname, C_IN, T_AFSDB, answer, sizeof(answer)); + len = res_search(dotcellname, C_IN, T_AFSDB, answer, sizeof(answer)); if ( len < 0 ) { len = res_search(acellName, C_IN, T_AFSDB, answer, sizeof(answer)); } @@ -876,11 +877,17 @@ afsconf_GetAfsdbInfo(char *acellName, char *aservice, free(dotcellname); } else { LOCK_GLOBAL_MUTEX; - len = res_search(acellName, C_IN, T_AFSDB, answer, sizeof(answer)); + len = res_search(acellName, C_IN, T_AFSDB, answer, sizeof(answer)); UNLOCK_GLOBAL_MUTEX; } - if (len < 0) + if (len < 0) { + if (try < 1) { + try++; + res_init(); + goto retryafsdb; + } return AFSCONF_NOTFOUND; + } p = answer + sizeof(HEADER); /* Skip header */ code = dn_expand(answer, answer + len, p, host, sizeof(host));