This patch should not be necessary, except under unusual circumstances. Perhaps it is necessary for the GDBM, but NDBM (whose code is nearly identical) does not need it. /Matti Aarnio - 1.Dec.1997 --- router/libdb/gdbm.c~ Wed Nov 26 18:24:18 1997 +++ router/libdb/gdbm.c Mon Dec 1 09:18:34 1997 @@ -105,7 +105,6 @@ conscell *tmp; struct spblk *spl = NULL; int retry, i; - spkey_t symid; retry = 0; @@ -120,8 +119,7 @@ val = gdbm_fetch(db, key); if (val.dptr == NULL) { if (!retry && gdbm_errno) { - gdbm_close(db); - sp_install(symid, (u_char *)NULL, 0, spt_files); + close_gdbm(sip); ++retry; goto reopen; } --- router/libdb/ndbm.c~ Mon Dec 1 09:11:11 1997 +++ router/libdb/ndbm.c Mon Dec 1 09:19:18 1997 @@ -75,7 +75,6 @@ conscell *tmp; struct spblk *spl; int retry, i; - spkey_t symid; char *us; retry = 0; @@ -92,13 +91,13 @@ if (val.dptr == NULL) { #ifdef HAVE_DBM_ERROR if (!retry && dbm_error(db)) { - dbm_close(db); + close_ndbm(sip); ++retry; goto reopen; } #else if (!retry && errno != 0) { - dbm_close(db); + close_ndbm(sip); ++retry; goto reopen; }