antiexpire 0 for rss
[citadel.git] / citadel / database.c
index 977814d424127e395068136e1e4d4c68181900a5..b55ec5fd646037cb87467943dba936dd768d01ef 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This is a data store backend for the Citadel server which uses Berkeley DB.
  *
- * Copyright (c) 1987-2016 by the citadel.org team
+ * Copyright (c) 1987-2017 by the citadel.org team
  *
  * This program is open source software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License version 3.
@@ -49,6 +49,7 @@
 #include "control.h"
 #include "citserver.h"
 #include "config.h"
+#pragma GCC diagnostic ignored "-Wcast-qual"
 
 static DB *dbp[MAXCDB];                /* One DB handle for each Citadel database */
 static DB_ENV *dbenv;          /* The DB environment (global) */
@@ -213,7 +214,7 @@ void cdb_checkpoint(void)
 {
        int ret;
 
-       MARKM_syslog(LOG_DEBUG, "-- db checkpoint --");
+       syslog(LOG_DEBUG, "-- db checkpoint --");
        ret = dbenv->txn_checkpoint(dbenv, MAX_CHECKPOINT_KBYTES, MAX_CHECKPOINT_MINUTES, 0);
 
        if (ret != 0) {
@@ -510,14 +511,12 @@ int cdb_store(int cdb, const void *ckey, int ckeylen, void *cdata, int cdatalen)
        memset(&dkey, 0, sizeof(DBT));
        memset(&ddata, 0, sizeof(DBT));
        dkey.size = ckeylen;
-       /* no, we don't care for this error. */
-       dkey.data = ckey;
-
+       dkey.data = (void *)ckey;
        ddata.size = cdatalen;
        ddata.data = cdata;
 
-       /* Only compress Visit records.  Everything else is uncompressed. */
-       if (cdb == CDB_VISIT) {
+       /* Only compress Visit and UseTable records.  Everything else is uncompressed. */
+       if ( (cdb == CDB_VISIT) || (cdb == CDB_USETABLE) ) {
                compressing = 1;
                zheader.magic = COMPRESS_MAGIC;
                zheader.uncompressed_len = cdatalen;
@@ -657,8 +656,7 @@ struct cdbdata *cdb_fetch(int cdb, const void *key, int keylen)
 
        memset(&dkey, 0, sizeof(DBT));
        dkey.size = keylen;
-       /* no we don't care about this error. */
-       dkey.data = key;
+       dkey.data = (void *)key;
 
        if (TSD->tid != NULL) {
                memset(&dret, 0, sizeof(DBT));
@@ -871,51 +869,32 @@ void cdb_trunc(int cdb)
        }
 }
 
-int SeentDebugEnabled = 0;
-
-#define DBGLOG(LEVEL) if ((LEVEL != LOG_DEBUG) || (SeentDebugEnabled != 0))
-#define SEENM_syslog(LEVEL, FORMAT)                                    \
-       DBGLOG(LEVEL) syslog(LEVEL,                                     \
-                            "%s[%ld]CC[%ld] SEEN[%s][%d] " FORMAT,     \
-                            IOSTR, ioid, ccid, Facility, cType)
-
-#define SEEN_syslog(LEVEL, FORMAT, ...)                                        \
-       DBGLOG(LEVEL) syslog(LEVEL,                                     \
-                            "%s[%ld]CC[%ld] SEEN[%s][%d] " FORMAT,     \
-                            IOSTR, ioid, ccid, Facility, cType,        \
-                            __VA_ARGS__)
-
-time_t CheckIfAlreadySeen(const char *Facility,
-                         StrBuf *guid,
-                         time_t now,
-                         time_t antiexpire,
-                         eCheckType cType,
-                         long ccid,
-                         long ioid)
+
+time_t CheckIfAlreadySeen(StrBuf *guid, time_t now, time_t antiexpire, eCheckType cType)
 {
        time_t InDBTimeStamp = 0;
        struct UseTable ut;
        struct cdbdata *cdbut;
 
+       memset(&ut, 0, sizeof(struct UseTable));        // zeroing it out makes it compress better
+
        if (cType != eWrite)
        {
-               SEEN_syslog(LOG_DEBUG, "Loading [%s]", ChrPtr(guid));
+               syslog(LOG_DEBUG, "Loading [%s]", ChrPtr(guid));
                cdbut = cdb_fetch(CDB_USETABLE, SKEY(guid));
                if ((cdbut != NULL) && (cdbut->ptr != NULL)) {
-                       memcpy(&ut, cdbut->ptr,
-                              ((cdbut->len > sizeof(struct UseTable)) ?
-                               sizeof(struct UseTable) : cdbut->len));
+                       memcpy(&ut, cdbut->ptr, ((cdbut->len > sizeof(struct UseTable)) ?  sizeof(struct UseTable) : cdbut->len));
                        InDBTimeStamp = now - ut.ut_timestamp;
 
                        if (InDBTimeStamp < antiexpire)
                        {
-                               SEEN_syslog(LOG_DEBUG, "Found - Not expired %ld < %ld", InDBTimeStamp, antiexpire);
+                               syslog(LOG_DEBUG, "Found - Not expired %ld < %ld", InDBTimeStamp, antiexpire);
                                cdb_free(cdbut);
                                return InDBTimeStamp;
                        }
                        else
                        {
-                               SEEN_syslog(LOG_DEBUG, "Found - Expired. %ld >= %ld", InDBTimeStamp, antiexpire);
+                               syslog(LOG_DEBUG, "Found - Expired. %ld >= %ld", InDBTimeStamp, antiexpire);
                                cdb_free(cdbut);
                        }
                }
@@ -923,7 +902,7 @@ time_t CheckIfAlreadySeen(const char *Facility,
                {
                        if (cdbut) cdb_free(cdbut);
                        
-                       SEENM_syslog(LOG_DEBUG, "not Found");
+                       syslog(LOG_DEBUG, "not Found");
                        if (cType == eCheckUpdate)
                                return 0;
                }
@@ -935,13 +914,9 @@ time_t CheckIfAlreadySeen(const char *Facility,
        memcpy(ut.ut_msgid, SKEY(guid));
        ut.ut_timestamp = now;
 
-       SEENM_syslog(LOG_DEBUG, "Saving new Timestamp");
        /* rewrite the record anyway, to update the timestamp */
-       cdb_store(CDB_USETABLE,
-                 SKEY(guid),
-                 &ut, sizeof(struct UseTable) );
-
-       SEENM_syslog(LOG_DEBUG, "Done Saving");
+       syslog(LOG_DEBUG, "(re)writing usetable record");
+       cdb_store(CDB_USETABLE, SKEY(guid), &ut, sizeof(struct UseTable));
        return InDBTimeStamp;
 }
 
@@ -992,16 +967,11 @@ void cmd_rsen(char *argbuf) {
        }
 
 }
-void LogDebugEnableSeenEnable(const int n)
-{
-       SeentDebugEnabled = n;
-}
 
 CTDL_MODULE_INIT(database)
 {
        if (!threading)
        {
-               CtdlRegisterDebugFlagHook(HKEY("SeenDebug"), LogDebugEnableSeenEnable, &SeentDebugEnabled);
                CtdlRegisterProtoHook(cmd_rsen, "RSEN", "manipulate Aggregators seen database");
        }