--- src/afs/afs_cell.c.0 Tue Oct 9 11:03:50 2001 +++ src/afs/afs_cell.c Tue Oct 9 11:17:20 2001 @@ -234,9 +234,8 @@ /* In case of lookup failure, keep old data */ return; - afs_NewCell(realName, cellHosts, tc->states, - tc->lcellp ? tc->lcellp->cellName : (char *) 0, - tc->fsport, tc->vlport, timeout, (char *) 0); + /* Refresh the DB servers for the real cell; other values stay the same. */ + afs_NewCell(realName, cellHosts, 0, (char *) 0, 0, 0, timeout, (char *) 0); /* If this is an alias, update the alias entry too */ if (afs_strcasecmp(tc->cellName, realName)) @@ -385,6 +384,13 @@ for (cq = CellLRU.next; cq != &CellLRU; cq = tq) { tc = QTOC(cq); tq = QNext(cq); if (afs_strcasecmp(tc->cellName, acellName) == 0) { + /* if the cell we've found has the correct name but no timeout, + * and we're called with a non-zero timeout, bail out: never + * override static configuration entries with AFSDB ones. */ + if (timeout && !tc->timeout) { + ReleaseWriteLock(&afs_xcell); + return 0; + } /* we don't want to keep pinging old vlservers which were down, * since they don't matter any more. It's easier to do this than * to remove the server from its various hash tables. */