diff --git a/src/afs/afs_init.c b/src/afs/afs_init.c index 550df26b68..b0f9d4cb93 100644 --- a/src/afs/afs_init.c +++ b/src/afs/afs_init.c @@ -828,5 +828,6 @@ shutdown_AFS(void) LOCK_INIT(&afs_puttofileLock, "afs_puttofileLock"); shutdown_cell(); + shutdown_server(); } } diff --git a/src/afs/afs_server.c b/src/afs/afs_server.c index 62a6fa3204..6643c1ee21 100644 --- a/src/afs/afs_server.c +++ b/src/afs/afs_server.c @@ -1706,3 +1706,31 @@ void afs_ActivateServer(struct srvAddr *sap) { } } } + + +void shutdown_server() +{ + int i; + + for (i = 0; i < NSERVERS; i++) { + struct server *ts, *next; + + ts = afs_servers[i]; + while(ts) { + next = ts->next; + afs_osi_Free(ts, sizeof(struct server)); + ts = next; + } + } + + for (i = 0; i < NSERVERS; i++) { + struct srvAddr *sa, *next; + + sa = afs_srvAddrs[i]; + while(sa) { + next = sa->next_bkt; + afs_osi_Free(sa, sizeof(struct srvAddr)); + sa = next; + } + } +}