]> code.citadel.org Git - citadel.git/blobdiff - citadel/msgbase.h
SMTP-Client: add per facility debug logging 'smtpeventclient'
[citadel.git] / citadel / msgbase.h
index 5bbd7aef6a10e1f005f0e86844887c63eb3ed56a..99b1cc0f838d69f6487333a6ea265d20102a3dec 100644 (file)
@@ -2,7 +2,7 @@
 #ifndef MSGBASE_H
 #define MSGBASE_H
 
-
+#include "event_client.h"
 enum {
        MSGS_ALL,
        MSGS_OLD,
@@ -28,7 +28,8 @@ enum {
        om_ok,
        om_not_logged_in,
        om_no_such_msg,
-       om_mime_error
+       om_mime_error,
+       om_access_denied
 };
 
 /*
@@ -48,6 +49,7 @@ struct ma_info {
        char chosen_part[128];  /* Which part of a m/a did we choose? */
        int chosen_pref;        /* Chosen part preference level (lower is better) */
        int use_fo_hooks;       /* Use fixed output hooks */
+       int dont_decode;        /* should we call the decoder or not? */
 };
 
 
@@ -70,9 +72,11 @@ struct recptypes {
        char *recp_internet;
        char *recp_ignet;
        char *recp_room;
+       char *recp_orgroom;
        char *display_recp;
        char *bounce_to;
        char *envelope_from;
+       char *sending_room;
 };
 
 #define RECPTYPES_MAGIC 0xfeeb
@@ -106,7 +110,7 @@ void cmd_opna (char *cmdbuf);
 void cmd_dlat (char *cmdbuf);
 long send_message (struct CtdlMessage *);
 void loadtroom (void);
-long CtdlSubmitMsg(struct CtdlMessage *, struct recptypes *, char *, int);
+long CtdlSubmitMsg(struct CtdlMessage *, struct recptypes *, const char *, int);
 void quickie_message (const char *, const char *, char *, char *, const char *, int, const char *);
 void cmd_ent0 (char *entargs);
 void cmd_dele (char *delstr);
@@ -138,6 +142,7 @@ void CtdlWriteObject(char *req_room,                        /* Room to stuff it in */
 );
 struct CtdlMessage *CtdlFetchMessage(long msgnum, int with_body);
 void CtdlFreeMessage(struct CtdlMessage *msg);
+void CtdlFreeMessageContents(struct CtdlMessage *msg);
 void serialize_message(struct ser_ret *, struct CtdlMessage *);
 void dump_message(struct CtdlMessage *msg, long Siz);
 int is_valid_message(struct CtdlMessage *);
@@ -186,10 +191,13 @@ enum {
        CHECK_EXISTANCE,
        POST_LMTP
 };
+
 int CtdlDoIHavePermissionToPostInThisRoom(char *errmsgbuf, 
-                                         size_t n, 
-                                         const char* RemoteIdentifier,
-                                         int PostPublic);
+       size_t n, 
+       const char* RemoteIdentifier,
+       int PostPublic,
+       int is_reply
+);
 
 
 /* values for which_set */
@@ -233,5 +241,25 @@ int CtdlIsMe(char *addr, int addr_buf_len);
 void aide_message(char *text, char *subject) __attribute__ ((deprecated));
 
 
+/* 
+ * loading messages async via an FD: 
+ * add IO->ReadMsg = NewAsyncMsg(...)
+ * and then call CtdlReadMessageBodyAsync() from your linreader handler.
+ */
+
+ReadAsyncMsg *NewAsyncMsg(const char *terminator,      /* token signalling EOT */
+                         long tlen,
+                         size_t expectlen,             /* if we expect a message, how long should it be? */
+                         size_t maxlen,                /* maximum message length */
+                         char *exist,                  /* if non-null, append to it;
+                                                          exist is ALWAYS freed  */
+                         long eLen,                    /* length of exist */
+                         int crlf                      /* CRLF newlines instead of LF */
+       );
+
+eReadState CtdlReadMessageBodyAsync(AsyncIO *IO);
+void DeleteAsyncMsg(ReadAsyncMsg **Msg);
+
+
 
 #endif /* MSGBASE_H */