int MsgCount = 0;
int run_queue_now = 0; /* Set to 1 to ignore SMTP send retry times */
+void RegisterQItemHandler(const char *Key, long Len, QItemHandler H)
+{
+ QItemHandlerStruct *HS = (QItemHandlerStruct*)malloc(sizeof(QItemHandlerStruct));
+ HS->H = H;
+ Put(QItemHandlers, Key, Len, HS, NULL);
+}
+
+
+
void smtp_try_one_queue_entry(OneQueItem *MyQItem,
MailQEntry *MyQEntry,
StrBuf *MsgText,
StrBufExtract_NextToken(Token, Line, &pItemPart, '|');
if (GetHash(QItemHandlers, SKEY(Token), &vHandler))
{
- QItemHandler H;
- H = (QItemHandler) vHandler;
- H(Item, Line, &pItemPart);
+ QItemHandlerStruct *HS;
+ HS = (QItemHandlerStruct*) vHandler;
+ HS->H(Item, Line, &pItemPart);
}
}
FreeStrBuf(&Line);
QItemHandlers = NewHash(0, NULL);
- Put(QItemHandlers, HKEY("msgid"), QItem_Handle_MsgID, reference_free_handler);
- Put(QItemHandlers, HKEY("envelope_from"), QItem_Handle_EnvelopeFrom, reference_free_handler);
- Put(QItemHandlers, HKEY("retry"), QItem_Handle_retry, reference_free_handler);
- Put(QItemHandlers, HKEY("attempted"), QItem_Handle_Attempted, reference_free_handler);
- Put(QItemHandlers, HKEY("remote"), QItem_Handle_Recipient, reference_free_handler);
- Put(QItemHandlers, HKEY("bounceto"), QItem_Handle_BounceTo, reference_free_handler);
- Put(QItemHandlers, HKEY("source_room"), QItem_Handle_SenderRoom, reference_free_handler);
- Put(QItemHandlers, HKEY("submitted"), QItem_Handle_Submitted, reference_free_handler);
+ RegisterQItemHandler(HKEY("msgid"), QItem_Handle_MsgID);
+ RegisterQItemHandler(HKEY("envelope_from"), QItem_Handle_EnvelopeFrom);
+ RegisterQItemHandler(HKEY("retry"), QItem_Handle_retry);
+ RegisterQItemHandler(HKEY("attempted"), QItem_Handle_Attempted);
+ RegisterQItemHandler(HKEY("remote"), QItem_Handle_Recipient);
+ RegisterQItemHandler(HKEY("bounceto"), QItem_Handle_BounceTo);
+ RegisterQItemHandler(HKEY("source_room"), QItem_Handle_SenderRoom);
+ RegisterQItemHandler(HKEY("submitted"), QItem_Handle_Submitted);
+
smtp_init_spoolout();
CtdlRegisterEVCleanupHook(smtp_evq_cleanup);