]> code.citadel.org Git - citadel.git/blobdiff - citadel/control.c
* More work on OpenID 1.1 Relying Party support
[citadel.git] / citadel / control.c
index e142504c661d847784be09ae1f616149aa4dea01..8da8192fa07ae82089d9a7d6ec8c65783d29f69e 100644 (file)
@@ -41,6 +41,7 @@
 #include "room_ops.h"
 #include "user_ops.h"
 #include "database.h"
+#include "threads.h"
 
 #ifndef HAVE_SNPRINTF
 #include "snprintf.h"
@@ -65,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
@@ -162,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;
@@ -171,6 +172,7 @@ void get_control(void)
        rewind(control_fp);
        fread(&CitControl, sizeof(struct CitControl), 1, control_fp);
        already_have_control = 1;
+       chown(file_citadel_control, config.c_ctdluid, (-1));
 }
 
 /*
@@ -212,6 +214,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.
  */
@@ -330,6 +349,10 @@ void cmd_conf(char *argbuf)
                cprintf("%s\n", config.c_master_pass);
                cprintf("%s\n", config.c_pager_program);
                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");
        }
 
@@ -337,7 +360,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,
@@ -571,6 +594,18 @@ void cmd_conf(char *argbuf)
                        case 61:
                                config.c_imap_keep_from = atoi(buf);
                                break;
+                       case 62:
+                               config.c_xmpp_c2s_port = atoi(buf);
+                               break;
+                       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;
                }