]> code.citadel.org Git - citadel.git/blobdiff - citadel/control.c
Sieve will now only process messages that are newer than its script.
[citadel.git] / citadel / control.c
index 9e01aa8a1a216ffa0a88292ba2f36c4585fb477e..671a9cc741d84433d0ea011ee623f67e6ed78c34 100644 (file)
@@ -66,8 +66,8 @@ void lock_control(void)
  */
 
        if (flock(fileno(control_fp), (LOCK_EX | LOCK_NB))) {
-               lprintf(CTDL_EMERG, "citserver: unable to lock %s.\n", file_citadel_control);
-               lprintf(CTDL_EMERG, "Is another citserver already running?\n");
+               CtdlLogPrintf(CTDL_EMERG, "citserver: unable to lock %s.\n", file_citadel_control);
+               CtdlLogPrintf(CTDL_EMERG, "Is another citserver already running?\n");
                exit(CTDLEXIT_CONTROL);
        }
 #endif
@@ -163,7 +163,7 @@ void get_control(void)
                }
        }
        if (control_fp == NULL) {
-               lprintf(CTDL_ALERT, "ERROR opening %s: %s\n",
+               CtdlLogPrintf(CTDL_ALERT, "ERROR opening %s: %s\n",
                                file_citadel_control,
                                strerror(errno));
                return;
@@ -213,6 +213,23 @@ long get_new_message_number(void)
 }
 
 
+/*
+ * CtdlGetCurrentMessageNumber()  -  Obtain the current highest message number in the system
+ * This provides a quick way to initialise a variable that might be used to indicate
+ * messages that should not be processed. EG. a new Sieve script will use this
+ * to record determine that messages older than this should not be processed.
+ */
+long CtdlGetCurrentMessageNumber(void)
+{
+       long retval = 0L;
+       begin_critical_section(S_CONTROL);
+       get_control();
+       retval = CitControl.MMhighest;
+       end_critical_section(S_CONTROL);
+       return(retval);
+}
+
+
 /*
  * get_new_user_number()  -  Obtain a new, unique ID to be used for a user.
  */
@@ -333,6 +350,8 @@ void cmd_conf(char *argbuf)
                cprintf("%d\n", config.c_imap_keep_from);
                cprintf("%d\n", config.c_xmpp_c2s_port);
                cprintf("%d\n", config.c_xmpp_s2s_port);
+               cprintf("%ld\n", config.c_pop3_fetch);
+               cprintf("%ld\n", config.c_pop3_fastest);
                cprintf("000\n");
        }
 
@@ -340,7 +359,7 @@ void cmd_conf(char *argbuf)
                unbuffer_output();
                cprintf("%d Send configuration...\n", SEND_LISTING);
                a = 0;
-               while (client_getln(buf, sizeof buf), strcmp(buf, "000")) {
+               while (client_getln(buf, sizeof buf) >= 0 && strcmp(buf, "000")) {
                        switch (a) {
                        case 0:
                                safestrncpy(config.c_nodename, buf,
@@ -580,6 +599,12 @@ void cmd_conf(char *argbuf)
                        case 63:
                                config.c_xmpp_s2s_port = atoi(buf);
                                break;
+                       case 64:
+                               config.c_pop3_fetch = atol(buf);
+                               break;
+                       case 65:
+                               config.c_pop3_fastest = atol(buf);
+                               break;
                        }
                        ++a;
                }