size_t len;
unsigned char answer[1024];
unsigned char *p;
+ char *dotcellname;
+ int cellnamelength;
char realCellName[256];
char host[256];
int server_num = 0;
* 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;