From a22957730d05aa2dea4a461400cf4e624f7b70df Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Fri, 29 Oct 1999 01:48:45 +0000 Subject: [PATCH] * database.c: Removed arbitrary limit on maximum number of sessions --- citadel/ChangeLog | 4 +++- citadel/database.c | 31 ++++++++++++++++++------------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/citadel/ChangeLog b/citadel/ChangeLog index 4f18c04be..4c375874e 100644 --- a/citadel/ChangeLog +++ b/citadel/ChangeLog @@ -1,4 +1,7 @@ $Log$ +Revision 1.403 1999/10/29 01:48:45 ajc +* database.c: Removed arbitrary limit on maximum number of sessions + Revision 1.402 1999/10/29 01:03:03 ajc * Debugged all possible ways for a session to terminate; do them cleanly. * Assign session numbers in a more portable and less arbitrary way. @@ -1388,4 +1391,3 @@ Sat Jul 11 00:20:48 EDT 1998 Nathan Bryant Fri Jul 10 1998 Art Cancro * Initial CVS import - diff --git a/citadel/database.c b/citadel/database.c index 79ae19813..2f2df05ac 100644 --- a/citadel/database.c +++ b/citadel/database.c @@ -38,12 +38,10 @@ GDBM_FILE gdbms[MAXCDB]; /* - * We also keep these around, for sequential searches... (one per - * session. Maybe there's a better way?) FIX ... there _is_ a better - * way. We have TSD functions now; use them. + * We also keep these around, for sequential searches (one per session slot) */ -#define MAXKEYS 256 -datum dtkey[MAXKEYS]; +int max_keys = 0; +datum *dtkey; /* @@ -93,8 +91,6 @@ void defrag_databases(void) { * does not exist should be created. */ void open_databases(void) { - int a; - lprintf(7, "%s\n", gdbm_version); /* @@ -158,11 +154,6 @@ void open_databases(void) { exit(1); } - for (a=0; acs_pid) { + ++max_keys; + if (dtkey == NULL) { + dtkey = (datum *) + mallok( (sizeof(datum) * max_keys) ); + } + else { + dtkey = (datum *) + reallok(dtkey, (sizeof(datum) * max_keys) ); + } + dtkey[max_keys - 1].dsize = 0; + dtkey[max_keys - 1].dptr = NULL; + } + if (dtkey[CC->cs_pid].dptr != NULL) { phree(dtkey[CC->cs_pid].dptr); } -- 2.39.2