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

src/auth/cellconfig.c

index a5f8b3aa810fdca8551008ce5fdb985315d1c275..63bd91e2bd2d98f6a4b1055cf776162de0b3fc25 100644 (file)
@@ -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));