]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
STABLE14-afsdb-resolver-reinit-20061228
authorDerrick Brashear <shadow@dementia.org>
Thu, 28 Dec 2006 20:38:41 +0000 (20:38 +0000)
committerDerrick Brashear <shadow@dementia.org>
Thu, 28 Dec 2006 20:38:41 +0000 (20:38 +0000)
as reported by Adam Megacz, but my own version of the fix

(cherry picked from commit fe649aac819839d84e6cecdbccdc5becc36fa968)

src/auth/cellconfig.c

index 76ea7a09e544e38a0ff6c255655fb9f70a61e2d8..4520757ec0738983456c1f32896be36ece33be9f 100644 (file)
@@ -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));