From 6bafc3f9a24ab058d32fb386425555cd2233d91c Mon Sep 17 00:00:00 2001 From: Frank Burkhardt Date: Sat, 15 Oct 2005 15:55:39 +0000 Subject: [PATCH] STABLE14-cellconfig-afsdb-use-dots-20051015 FIXES 20908 do lookup postpending a . (cherry picked from commit 3d96fdb1825bd8c6bf76c11ed2fa5dc8f56aa532) --- src/auth/cellconfig.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/auth/cellconfig.c b/src/auth/cellconfig.c index b47cacccb..7dc02bf71 100644 --- a/src/auth/cellconfig.c +++ b/src/auth/cellconfig.c @@ -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; -- 2.39.5