ObtainWriteLock(&afsdb_req.lock, 686);
*acellHosts = 0;
- afsdb_req.cellname = acellName;
+ afsdb_req.cellname = afs_strdup(acellName);
afsdb_req.cellhosts = acellHosts;
afsdb_req.timeout = timeout;
afsdb_req.realname = realName;
afs_osi_Sleep(&afsdb_req);
ObtainReadLock(&afsdb_req.lock);
};
+
+ afs_osi_FreeStr(afsdb_req.cellname);
ReleaseReadLock(&afsdb_req.lock);
ReleaseWriteLock(&afsdb_client_lock);
afs_LookupAFSDB(char *acellName)
{
#ifdef AFS_AFSDB_ENV
- afs_int32 cellHosts[MAXCELLHOSTS];
- char *realName = NULL;
- int code, timeout;
+ afs_int32 *cellHosts;
+ char **realName=NULL;
+ int code;
+ int *timeout=NULL;
+
+ if(!(cellHosts = afs_osi_Alloc(MAXCELLHOSTS)))
+ goto done;
+
+ if(!(realName = afs_osi_Alloc(sizeof(char **))))
+ goto done;
+ *realName = NULL;
+
+ if(!(timeout = afs_osi_Alloc(sizeof(int *))))
+ goto done;
- code = afs_GetCellHostsAFSDB(acellName, cellHosts, &timeout, &realName);
+ code = afs_GetCellHostsAFSDB(acellName, cellHosts, timeout, realName);
if (code)
goto done;
- code = afs_NewCell(realName, cellHosts, CNoSUID, NULL, 0, 0, timeout);
+ code = afs_NewCell(*realName, cellHosts, CNoSUID, NULL, 0, 0, *timeout);
if (code && code != EEXIST)
goto done;
/* If we found an alias, create it */
- if (afs_strcasecmp(acellName, realName))
- afs_NewCellAlias(acellName, realName);
+ if (afs_strcasecmp(acellName, *realName))
+ afs_NewCellAlias(acellName, *realName);
done:
- if (realName)
- afs_osi_FreeStr(realName);
+ if(timeout)
+ afs_osi_Free(timeout, sizeof(int *));
+ if (realName && *realName)
+ afs_osi_FreeStr(*realName);
+ if(realName)
+ afs_osi_Free(realName, sizeof(char **));
+ if(cellHosts)
+ afs_osi_Free(cellHosts, MAXCELLHOSTS);
#endif
}