*/
FreeStrBuf(&Q->Recipient);
FreeStrBuf(&Q->StatusMessage);
-
+ FreeStrBuf(&Q->AllStatusMessages);
memset(Q, 0, sizeof(MailQEntry));
free(Q);
}
StrBufAppendBufPlain(QMessage, HKEY("|"), 0);
StrBufAppendPrintf(QMessage, "%d", ThisItem->Status);
StrBufAppendBufPlain(QMessage, HKEY("|"), 0);
- StrBufAppendBuf(QMessage, ThisItem->StatusMessage, 0);
+ if (ThisItem->AllStatusMessages != NULL)
+ StrBufAppendBuf(QMessage, ThisItem->AllStatusMessages, 0);
+ else
+ StrBufAppendBuf(QMessage, ThisItem->StatusMessage, 0);
}
DeleteHashPos(&It);
StrBufAppendBufPlain(QMessage, HKEY("\n"), 0);
* instructions for "5" codes (permanent fatal errors) and produce/deliver
* a "bounce" message (delivery status notification).
*/
-void smtpq_do_bounce(OneQueItem *MyQItem, StrBuf *OMsgTxt, ParsedURL *Relay)
+void smtpq_do_bounce(OneQueItem *MyQItem, StrBuf *StatusMessage, 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);
+ StrBufAppendBuf(Msg, StatusMessage, 0);
StrBufAppendBufPlain(Msg, HKEY("\r\n"), 0);
}
}
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);
(((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++;
}