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;
}