imsg->cm_magic = CTDLMESSAGE_MAGIC;
imsg->cm_anon_type = MES_NORMAL;
imsg->cm_format_type = FMT_RFC822;
- CM_SetField(imsg, eMsgSubject, HKEY("QMSG"));
- CM_SetField(imsg, eAuthor, HKEY("Citadel"));
- CM_SetField(imsg, eJournal, HKEY("do not journal"));
- CM_SetAsFieldSB(imsg, eMesageText, &SpoolMsg);
+ CM_SetField(imsg, eMsgSubject, "QMSG");
+ CM_SetField(imsg, eAuthor, "Citadel");
+ CM_SetField(imsg, eJournal, "do not journal");
+ CM_SetAsFieldSB(imsg, eMessageText, &SpoolMsg);
last_queue_job_submitted = CtdlSubmitMsg(imsg, NULL, SMTP_SPOOLOUT_ROOM);
CM_Free(imsg);
}
return;
}
- char *t = malloc(strlen(response));
- if (!t) {
- return;
- }
- t[0] = 0;
-
char *p;
for (p = response; *p != 0; ++p) {
if ( (*p != '\n') && (!isprint(*p)) ) { // expunge any nonprintables except for newlines
// Construct an SMTP URL in the form of:
// smtp[s]://target_host/source_host
// This looks weird but libcurl uses that last part to set our name for EHLO or HELO.
- // We check for "smtp://" and "smtps://" because the admin may have put those prefixes in a smart-host entry.
+ // We check for "smtp://" and "smtps://" because an admin may have put those prefixes in a smart-host entry
// If there is no prefix we add "smtp://"
extract_token(try_this_mx, mxes, i, '|', (sizeof try_this_mx - 7));
snprintf(smtp_url, sizeof smtp_url,
return;
}
- instr = msg->cm_fields[eMesageText];
- msg->cm_fields[eMesageText] = NULL;
+ instr = msg->cm_fields[eMessageText];
+ msg->cm_fields[eMessageText] = NULL;
CM_Free(msg);
// if the queue job message has any CRLF's convert them to LF's
char cfgline[SIZ];
for (i = 0; i < num_tokens(instr, '\n'); ++i) {
extract_token(cfgline, instr, i, '\n', sizeof cfgline);
- if (!strncasecmp(cfgline, HKEY("msgid|")))
- msgid = atol(&cfgline[6]);
- if (!strncasecmp(cfgline, HKEY("submitted|")))
- submitted = atol(&cfgline[10]);
- if (!strncasecmp(cfgline, HKEY("attempted|")))
- attempted = atol(&cfgline[10]);
- if (!strncasecmp(cfgline, HKEY("bounceto|")))
- bounceto = strdup(&cfgline[9]);
- if (!strncasecmp(cfgline, HKEY("envelope_from|")))
- envelope_from = strdup(&cfgline[14]);
- if (!strncasecmp(cfgline, HKEY("source_room|")))
- source_room = strdup(&cfgline[12]);
+ if (!strncasecmp(cfgline, HKEY("msgid|"))) msgid = atol(&cfgline[6]);
+ if (!strncasecmp(cfgline, HKEY("submitted|"))) submitted = atol(&cfgline[10]);
+ if (!strncasecmp(cfgline, HKEY("attempted|"))) attempted = atol(&cfgline[10]);
+ if (!strncasecmp(cfgline, HKEY("bounceto|"))) bounceto = strdup(&cfgline[9]);
+ if (!strncasecmp(cfgline, HKEY("envelope_from|"))) envelope_from = strdup(&cfgline[14]);
+ if (!strncasecmp(cfgline, HKEY("source_room|"))) source_room = strdup(&cfgline[12]);
}
int should_try_now = 0;
// Put the queue in memory so we can close the db cursor
CtdlForEachMessage(
- (type_of_queue_run == QUICK_QUEUE_RUN ? MSGS_GT : MSGS_ALL), // quick = new jobs; full = all jobs
- (type_of_queue_run == QUICK_QUEUE_RUN ? last_queue_job_processed : 0), // quick = new jobs; full = all jobs
+ (type_of_queue_run == QUICK_QUEUE_RUN ? MSGS_GT : MSGS_ALL), // quick = new jobs; full = all jobs
+ (type_of_queue_run == QUICK_QUEUE_RUN ? last_queue_job_processed : 0), // quick = new jobs; full = all jobs
NULL,
SPOOLMIME, // Searching for Content-type of SPOOLIME will give us only queue instruction messages
NULL,
}
+// The "full" queue run goes through the entire queue, attempting delivery for newly submitted messages,
+// retrying failed deliveries periodically, and handling undeliverable messages.
void smtp_do_queue_full(void) {
smtp_do_queue(FULL_QUEUE_RUN);
}
+// The "quick" queue run only handles newly submitted messages, allowing them to be delivered immediately
+// instead of waiting for the next "full" queue run.
void smtp_do_queue_quick(void) {
if (last_queue_job_submitted > last_queue_job_processed) {
smtp_do_queue(QUICK_QUEUE_RUN);