cellconfig-afsdb-use-dots-20051015
authorFrank Burkhardt <fbo2@gmx.net>
Sat, 15 Oct 2005 15:54:28 +0000 (15:54 +0000)
committerDerrick Brashear <shadow@dementia.org>
Sat, 15 Oct 2005 15:54:28 +0000 (15:54 +0000)
FIXES 20908

do lookup postpending a .

src/auth/cellconfig.c

index b47cacc..7dc02bf 100644 (file)
@@ -740,6 +740,8 @@ afsconf_GetAfsdbInfo(char *acellName, char *aservice,
     size_t len;
     unsigned char answer[1024];
     unsigned char *p;
+    char *dotcellname;
+    int cellnamelength;
     char realCellName[256];
     char host[256];
     int server_num = 0;
@@ -749,9 +751,25 @@ afsconf_GetAfsdbInfo(char *acellName, char *aservice,
      * replaced with a more fine-grained lock just for the resolver
      * operations.
      */
-    LOCK_GLOBAL_MUTEX;
-    len = res_search(acellName, C_IN, T_AFSDB, answer, sizeof(answer));
-    UNLOCK_GLOBAL_MUTEX;
+
+    if ( ! strchr(acellName,'.') ) {
+       cellnamelength=strlen(acellName);
+       dotcellname=malloc(cellnamelength+2);
+       memcpy(dotcellname,acellName,cellnamelength);
+       dotcellname[cellnamelength]='.';
+       dotcellname[cellnamelength+1]=0;
+       LOCK_GLOBAL_MUTEX;
+           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));
+       }
+       UNLOCK_GLOBAL_MUTEX;
+       free(dotcellname);
+    } else {
+       LOCK_GLOBAL_MUTEX;
+           len = res_search(acellName, C_IN, T_AFSDB, answer, sizeof(answer));
+       UNLOCK_GLOBAL_MUTEX;
+    }
     if (len < 0)
        return AFSCONF_NOTFOUND;