X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Fsmtp%2Fserv_smtpqueue.c;h=4704d31ce75ef7267d833e97b2e5561c3c7712f9;hb=5908cd95dd4b42dbc40fc80ae0e1cf453c5dc68b;hp=b2c0ea2338af6ada31000619b344bb59d3091104;hpb=5ce81abfa49b1fcc83525b2ca14f393eeb98f7a7;p=citadel.git diff --git a/citadel/modules/smtp/serv_smtpqueue.c b/citadel/modules/smtp/serv_smtpqueue.c index b2c0ea233..4704d31ce 100644 --- a/citadel/modules/smtp/serv_smtpqueue.c +++ b/citadel/modules/smtp/serv_smtpqueue.c @@ -101,6 +101,15 @@ static const long MaxRetry = SMTP_RETRY_INTERVAL * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 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, @@ -270,9 +279,9 @@ OneQueItem *DeserializeQueueItem(StrBuf *RawQItem, long QueMsgID) 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); @@ -1092,14 +1101,15 @@ CTDL_MODULE_INIT(smtp_queu) 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);