#define CM_SKIP_HOOKS 0x01 /* Don't run server-side handlers */
+
+/*
+ * Exit codes 101 through 109 are used for conditions in which
+ * we deliberately do NOT want the service to automatically
+ * restart.
+ */
+#define CTDLEXIT_CONFIG 101 /* Could not read citadel.config */
+#define CTDLEXIT_CONTROL 102 /* Could not acquire lock */
+#define CTDLEXIT_HOME 103 /* Citadel home directory not found */
+#define CTDLEXIT_OOD 104 /* Out Of Date config - rerun setup */
+#define CTDLEXIT_DB 105 /* Unable to initialize database */
+
+
+
+
/*
* Here's the big one... the Citadel context structure.
*
* This structure keeps track of all information relating to a running
* session on the server. We keep one of these for each session thread.
*
- * Note that the first element is "*next" so that it may be used without
- * modification in a linked list.
*/
struct CitContext {
struct CitContext *prev; /* Link to previous session in list */
int async_waiting; /* Nonzero if there are async msgs waiting */
int input_waiting; /* Nonzero if there is client input waiting */
- /* feeping creaturisms... */
+ /* Client information */
int cs_clientdev; /* client developer ID */
int cs_clienttyp; /* client type code */
int cs_clientver; /* client version number */
char cs_addr[64]; /* address logged in from */
/* The Internet type of thing */
- char cs_inet_email[128];/* Return address of outbound Internet mail */
+ char cs_inet_email[128]; /* Return address of outbound Internet mail */
+ char cs_inet_other_emails[1024]; /* User's other valid Internet email addresses */
+ char cs_inet_fn[128]; /* Friendly-name of outbound Internet mail */
FILE *download_fp; /* Fields relating to file transfer */
char download_desired_section[128];
int disable_exp; /* Set to 1 to disable incoming pages */
int newmail; /* Other sessions increment this */
- /* Masquerade... */
- char fake_username[USERNAME_SIZE]; /* Fake username <bc> */
- char fake_postname[USERNAME_SIZE]; /* Fake postname <bc> */
- char fake_hostname[64]; /* Fake hostname <bc> */
- char fake_roomname[ROOMNAMELEN]; /* Fake roomname <bc> */
+ /* Masqueraded values in the 'who is online' list */
+ char fake_username[USERNAME_SIZE];
+ char fake_hostname[64];
+ char fake_roomname[ROOMNAMELEN];
char preferred_formats[256]; /* Preferred MIME formats */
struct citpop3 *POP3;
struct citsmtp *SMTP;
struct citmgsve *MGSVE; /**< Managesieve Session struct */
- char *SMTP_RECPS;
- char *SMTP_ROOMS;
struct cit_ical *CIT_ICAL; /* calendaring data */
struct ma_info *ma; /* multipart/alternative data */
};
S_ATBF,
S_JOURNAL_QUEUE,
S_RPLIST,
+ S_SIEVELIST,
+ S_CHKPWD,
MAX_SEMAPHORES
};
MT_CITADEL, /* Citadel proprietary */
MT_RFC822, /* RFC822 */
MT_MIME, /* MIME-formatted message */
- MT_DOWNLOAD /* Download a component */
+ MT_DOWNLOAD, /* Download a component */
+ MT_SPEW_SECTION /* Download a component in a single operation */
};
/*
/*
* ServiceFunctionHook extensions are used for hooks which implement various
- * non-Citadel services (on TCP protocols) directly in the Citadel server.
+ * protocols (either on TCP or on unix domain sockets) directly in the Citadel server.
*/
struct ServiceFunctionHook {
struct ServiceFunctionHook *next;
long meta_rfc822_length; /* Cache of RFC822-translated msg length */
};
+/* Calls to AdjRefCount() are queued and deferred, so the user doesn't
+ * have to wait for various disk-intensive operations to complete synchronously.
+ * This is the record format.
+ */
+struct arcq {
+ long arcq_msgnum; /* Message number being adjusted */
+ int arcq_delta; /* Adjustment ( usually 1 or -1 ) */
+};
+
/*
* Serialization routines use this struct to return a pointer and a length
};
-/* Preferred field order */
-/* ********** Important fields */
-/* *************** Semi-important fields */
-/* * Message text (MUST be last) */
+/* Preferred field order */
+/* ********** Important fields */
+/* *************** Semi-important fields */
+/* * Message text (MUST be last) */
#define FORDER "IPTAFONHRDBCEJGKLQSVWXZYUM"
#endif /* SERVER_H */