void smtpq_do_bounce(OneQueItem *MyQItem, StrBuf *OMsgTxt, ParsedURL *Relay)
{
static int seq = 0;
-
+
struct CtdlMessage *bmsg = NULL;
StrBuf *boundary;
StrBuf *Msg = NULL;
StrBufAppendBufPlain(Msg, HKEY(" "), 0);
StrBufAppendBuf(Msg, ThisItem->Recipient, 0);
StrBufAppendBufPlain(Msg, HKEY(": "), 0);
- StrBufAppendBuf(Msg, ThisItem->StatusMessage, 0);
+ if (ThisItem->AllStatusMessages != NULL)
+ StrBufAppendBuf(Msg, ThisItem->AllStatusMessages, 0);
+ else
+ StrBufAppendBuf(Msg, ThisItem->StatusMessage, 0);
StrBufAppendBufPlain(Msg, HKEY("\r\n"), 0);
}
}
bmsg->cm_anon_type = MES_NORMAL;
bmsg->cm_format_type = FMT_RFC822;
- bmsg->cm_fields['O'] = strdup(MAILROOM);
- bmsg->cm_fields['A'] = strdup("Citadel");
- bmsg->cm_fields['N'] = strdup(config.c_nodename);
- bmsg->cm_fields['U'] = strdup("Delivery Status Notification (Failure)");
- bmsg->cm_fields['M'] = SmashStrBuf(&BounceMB);
+ CM_SetField(bmsg, eOriginalRoom, HKEY(MAILROOM));
+ CM_SetField(bmsg, eAuthor, HKEY("Citadel"));
+ CM_SetField(bmsg, eNodeName, config.c_nodename, strlen(config.c_nodename));
+ CM_SetField(bmsg, eMsgSubject, HKEY("Delivery Status Notification (Failure)"));
+ CM_SetAsFieldSB(bmsg, eMesageText, &BounceMB);
/* First try the user who sent the message */
if (StrLength(MyQItem->BounceTo) == 0) {
/* Free up the memory we used */
free_recipients(valid);
FreeStrBuf(&boundary);
- CtdlFreeMessage(bmsg);
+ CM_Free(bmsg);
SMTPCM_syslog(LOG_DEBUG, "Done processing bounces\n");
}
StrBuf *Msg =NULL;
if (mynumsessions > max_sessions_for_outbound_smtp) {
- SMTPC_syslog(LOG_DEBUG,
+ SMTPC_syslog(LOG_INFO,
"skipping because of num jobs %d > %d max_sessions_for_outbound_smtp",
mynumsessions,
max_sessions_for_outbound_smtp);
return;
}
- pch = instr = msg->cm_fields['M'];
+ pch = instr = msg->cm_fields[eMesageText];
/* Strip out the headers (no not amd any other non-instruction) line */
while (pch != NULL) {
}
}
PlainQItem = NewStrBufPlain(instr, -1);
- CtdlFreeMessage(msg);
+ CM_Free(msg);
MyQItem = DeserializeQueueItem(PlainQItem, msgnum);
FreeStrBuf(&PlainQItem);
(((MyQItem->ActiveDeliveries * 2) < max_sessions_for_outbound_smtp)))
{
/* abort delivery for another time. */
- SMTPC_syslog(LOG_DEBUG,
+ SMTPC_syslog(LOG_INFO,
"SMTP Queue: skipping because of num jobs %d + %ld > %d max_sessions_for_outbound_smtp",
mynumsessions,
MyQItem->ActiveDeliveries,
max_sessions_for_outbound_smtp);
- FreeQueItem(&MyQItem);
+ It = GetNewHashPos(MyQItem->MailQEntries, 0);
+ pthread_mutex_lock(&ActiveQItemsLock);
+ {
+ if (GetHashPosFromKey(ActiveQItems,
+ LKEY(MyQItem->MessageID),
+ It))
+ {
+ DeleteEntryFromHash(ActiveQItems, It);
+ }
+ }
+ pthread_mutex_unlock(&ActiveQItemsLock);
return;
}
n,
RelayUrls);
- if (KeepBuffers) HaveBuffers = 1;
+ if (KeepBuffers) HaveBuffers++;
i++;
}
n,
RelayUrls);
- if (KeepBuffers) HaveBuffers = 1;
+ if (KeepBuffers) HaveBuffers++;
i++;
}