Merge branch 'master' of ssh://git.citadel.org/appl/gitroot/citadel
[citadel.git] / citadel / database.c
index 724ee0f941cb20f73cfc1f0609ed6837c8af4256..0db5c38fed48ec8590bff00e18def79c9caca0c5 100644 (file)
 /*****************************************************************************/
 
 #include "sysdep.h"
-#include <stdlib.h>
-#include <unistd.h>
 #include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
 #include <dirent.h>
-#include <syslog.h>
 #include <zlib.h>
 
 #ifdef HAVE_DB_H
 
 
 #include <libcitadel.h>
-#include "citadel.h"
-#include "server.h"
-#include "citserver.h"
-#include "database.h"
-#include "msgbase.h"
-#include "sysdep_decls.h"
-#include "threads.h"
-#include "config.h"
-#include "control.h"
 
 #include "ctdl_module.h"
+#include "control.h"
+#include "citserver.h"
 
 
 static DB *dbp[MAXCDB];                /* One DB handle for each Citadel database */
@@ -185,7 +170,7 @@ void cdb_check_handles(void)
 /*
  * Cull the database logs
  */
-static void cdb_cull_logs(void)
+void cdb_cull_logs(void)
 {
        u_int32_t flags;
        int ret;
@@ -221,15 +206,6 @@ static void cdb_cull_logs(void)
        }
 }
 
-/*
- * Manually initiate log file cull.
- */
-void cmd_cull(char *argbuf) {
-       if (CtdlAccessCheck(ac_internal)) return;
-       cdb_cull_logs();
-       cprintf("%d Database log file cull completed.\n", CIT_OK);
-}
-
 
 /*
  * Request a checkpoint of the database.  Called once per minute by the thread manager.
@@ -437,7 +413,6 @@ void cdb_chmod_data(void) {
        }
 
        syslog(LOG_DEBUG, "open_databases() finished\n");
-       CtdlRegisterProtoHook(cmd_cull, "CULL", "Cull database logs");
 }
 
 
@@ -933,7 +908,7 @@ time_t CheckIfAlreadySeen(const char *Facility,
        {
                SEENM_syslog(LOG_DEBUG, "Loading");
                cdbut = cdb_fetch(CDB_USETABLE, SKEY(guid));
-               if (cdbut != NULL) {
+               if ((cdbut != NULL) && (cdbut->ptr != NULL)) {
                        memcpy(&ut, cdbut->ptr,
                               ((cdbut->len > sizeof(struct UseTable)) ?
                                sizeof(struct UseTable) : cdbut->len));
@@ -954,6 +929,8 @@ time_t CheckIfAlreadySeen(const char *Facility,
                }
                else
                {
+                       if (cdbut) cdb_free(cdbut);
+
                        SEENM_syslog(LOG_DEBUG, "not Found");
                }