From eca949efe07dc00c9b8d2aefdfc0a5fd1fd7f1c7 Mon Sep 17 00:00:00 2001 From: Derrick Brashear Date: Thu, 28 Dec 2006 20:38:41 +0000 Subject: [PATCH] STABLE14-afsdb-resolver-reinit-20061228 as reported by Adam Megacz, but my own version of the fix (cherry picked from commit fe649aac819839d84e6cecdbccdc5becc36fa968) --- src/auth/cellconfig.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/auth/cellconfig.c b/src/auth/cellconfig.c index 76ea7a09e..4520757ec 100644 --- a/src/auth/cellconfig.c +++ b/src/auth/cellconfig.c @@ -866,6 +866,7 @@ afsconf_GetAfsdbInfo(char *acellName, char *aservice, * operations. */ + retryafsdb: if ( ! strchr(acellName,'.') ) { cellnamelength=strlen(acellName); dotcellname=malloc(cellnamelength+2); @@ -873,7 +874,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)); } @@ -881,11 +882,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)); -- 2.39.5