char buf[SIZ];
time_t msgdate;
+ if (!msg) return;
if (msg->cm_fields['T'] != NULL) {
msgdate = atol(msg->cm_fields['T']);
}
*/
void imap_fetch_rfc822(long msgnum, char *whichfmt) {
char buf[SIZ];
- char *ptr;
+ char *ptr = NULL;
size_t headers_size, text_size, total_size;
size_t bytes_to_send = 0;
struct MetaData smi;
CC->redirect_alloc = SIZ;
CtdlOutputMsg(msgnum, MT_RFC822,
(need_body ? HEADERS_ALL : HEADERS_ONLY),
- 0, 1);
+ 0, 1, NULL);
if (!need_body) cprintf("\r\n"); /* extra trailing newline */
IMAP->cached_rfc822_data = CC->redirect_buffer;
IMAP->cached_rfc822_len = CC->redirect_len;
void imap_output_envelope_from(struct CtdlMessage *msg) {
char user[SIZ], node[SIZ], name[SIZ];
+ if (!msg) return;
+
/* For anonymous messages, it's so easy! */
if (!is_room_aide() && (msg->cm_anon_type == MES_ANONONLY)) {
cprintf("((\"----\" NIL \"x\" \"x.org\")) ");
time_t msgdate;
char *fieldptr = NULL;
+ if (!msg) return;
+
/* Parse the message date into an IMAP-format date string */
if (msg->cm_fields['T'] != NULL) {
msgdate = atol(msg->cm_fields['T']);
/* To */
imap_output_envelope_addr(msg->cm_fields['R']);
- /* Cc */
- fieldptr = rfc822_fetch_field(msg->cm_fields['M'], "Cc");
- imap_output_envelope_addr(fieldptr);
- if (fieldptr != NULL) free(fieldptr);
+ /* Cc (we do it this way because there might be a legacy non-Citadel Cc: field present) */
+ fieldptr = msg->cm_fields['Y'];
+ if (fieldptr != NULL) {
+ imap_output_envelope_addr(fieldptr);
+ }
+ else {
+ fieldptr = rfc822_fetch_field(msg->cm_fields['M'], "Cc");
+ imap_output_envelope_addr(fieldptr);
+ if (fieldptr != NULL) free(fieldptr);
+ }
/* Bcc */
fieldptr = rfc822_fetch_field(msg->cm_fields['M'], "Bcc");
if (strchr(section, '[') != NULL) {
stripallbut(section, '[', ']');
}
- /* lprintf(CTDL_DEBUG, "Section is: %s%s\n", section, ((strlen(section)==0) ? "(empty)" : "") ); */
+ lprintf(CTDL_DEBUG, "Section is: %s%s\n", section, ((strlen(section)==0) ? "(empty)" : "") );
if (!strncasecmp(section, "HEADER", 6)) {
need_body = 0;
}
}
else if ( (!strcmp(section, "1")) && (msg->cm_format_type != 4) ) {
- CtdlOutputPreLoadedMsg(msg, msgnum, MT_RFC822, HEADERS_NONE, 0, 1);
+ CtdlOutputPreLoadedMsg(msg, MT_RFC822, HEADERS_NONE, 0, 1);
}
else if (!strcmp(section, "")) {
- CtdlOutputPreLoadedMsg(msg, msgnum, MT_RFC822, HEADERS_ALL, 0, 1);
+ CtdlOutputPreLoadedMsg(msg, MT_RFC822, HEADERS_ALL, 0, 1);
}
/*
* fields, strip it down.
*/
else if (!strncasecmp(section, "HEADER", 6)) {
- CtdlOutputPreLoadedMsg(msg, msgnum, MT_RFC822, HEADERS_ONLY, 0, 1);
+ CtdlOutputPreLoadedMsg(msg, MT_RFC822, HEADERS_ONLY, 0, 1);
imap_strip_headers(section);
}
* Strip it down if the client asked for everything _except_ headers.
*/
else if (!strncasecmp(section, "TEXT", 4)) {
- CtdlOutputPreLoadedMsg(msg, msgnum, MT_RFC822, HEADERS_NONE, 0, 1);
+ CtdlOutputPreLoadedMsg(msg, MT_RFC822, HEADERS_NONE, 0, 1);
}
/*
/* Mark this message as "seen" *unless* this is a "peek" operation */
if (is_peek == 0) {
- CtdlSetSeen(msgnum, 1, ctdlsetseen_seen, NULL, NULL);
+ CtdlSetSeen(&msgnum, 1, 1, ctdlsetseen_seen, NULL, NULL);
}
}
CC->redirect_buffer = malloc(SIZ);
CC->redirect_len = 0;
CC->redirect_alloc = SIZ;
- CtdlOutputPreLoadedMsg(msg, msgnum, MT_RFC822, 0, 0, 1);
+ CtdlOutputPreLoadedMsg(msg, MT_RFC822, 0, 0, 1);
rfc822 = CC->redirect_buffer;
rfc822_len = CC->redirect_len;
CC->redirect_buffer = NULL;