X-Git-Url: https://code.citadel.org/?p=citadel.git;a=blobdiff_plain;f=webcit%2Fsmtpqueue.c;h=b5c750a311a1b4106a9072b8ae20f3e51db4996a;hp=fc95a0dc6e0c5073dfc52b61d52ff40d9b1fa96e;hb=HEAD;hpb=3841dfefb6b086720b6d5d9af39aaf8b19730e6d diff --git a/webcit/smtpqueue.c b/webcit/smtpqueue.c index fc95a0dc6..b5c750a31 100644 --- a/webcit/smtpqueue.c +++ b/webcit/smtpqueue.c @@ -3,6 +3,8 @@ */ #include "webcit.h" +CtxType CTX_MAILQITEM = CTX_NONE; +CtxType CTX_MAILQ_RCPT = CTX_NONE; HashList *QItemHandlers = NULL; @@ -250,6 +252,7 @@ void QItem_Handle_SenderRoom(OneQueItem *Item, StrBuf *Line, const char **Pos) void QItem_Handle_Recipient(OneQueItem *Item, StrBuf *Line, const char **Pos) { + const char *pch; if (Item->Current == NULL) NewMailQEntry(Item); if (Item->Current->Recipient == NULL) @@ -257,6 +260,18 @@ void QItem_Handle_Recipient(OneQueItem *Item, StrBuf *Line, const char **Pos) StrBufExtract_NextToken(Item->Current->Recipient, Line, Pos, '|'); Item->Current->Status = StrBufExtractNext_int(Line, Pos, '|'); StrBufExtract_NextToken(Item->Current->StatusMessage, Line, Pos, '|'); + + pch = ChrPtr(Item->Current->StatusMessage); + while ((pch != NULL) && (*pch != '\0')) { + pch = strchr(pch, ';'); + if (pch != NULL) { + pch ++; + if (*pch == ' ') { + StrBufPeek(Item->Current->StatusMessage, + pch, -1, '\n'); + } + } + } Item->Current = NULL; // TODO: is this always right? } @@ -281,19 +296,20 @@ void QItem_Handle_Attempted(OneQueItem *Item, StrBuf *Line, const char **Pos) - - - - -void render_QUEUE(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundCharset) +void render_QUEUE(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset) { + wc_mime_attachment *Mime = CTX(CTX_MIME_ATACH); WCTemplputParams SubTP; + OneQueItem* Context; - memset(&SubTP, 0, sizeof(WCTemplputParams)); - SubTP.Filter.ContextType = CTX_MAILQITEM; - SubTP.Context = DeserializeQueueItem(Mime->Data, Mime->msgnum); - DoTemplate(HKEY("view_mailq_message"),NULL, &SubTP); - FreeQueItem ((OneQueItem**)&SubTP.Context); + Context = DeserializeQueueItem(Mime->Data, Mime->msgnum); + StackContext(TP, &SubTP, Context, CTX_MAILQITEM, 0, TP->Tokens); + { + DoTemplate(HKEY("view_mailq_message"), NULL, &SubTP); + } + UnStackContext(&SubTP); + + FreeQueItem (&Context); } void @@ -357,7 +373,7 @@ int qview_LoadMsgFromServer(SharedMessageStatus *Stat, const StrBuf *Mime; /* Not (yet?) needed here? calview *c = (calview *) *ViewSpecific; */ - read_message(WCC->WBuf, HKEY("view_mailq_message_bearer"), Msg->msgnum, NULL, &Mime); + read_message(WCC->WBuf, HKEY("view_mailq_message_bearer"), Msg->msgnum, NULL, &Mime, NULL); return 0; } @@ -370,6 +386,7 @@ int qview_RenderView_or_Tail(SharedMessageStatus *Stat, wcsession *WCC = WC; WCTemplputParams SubTP; + memset(&SubTP, 0, sizeof(WCTemplputParams)); if (yesbstr("ListOnly")) DoTemplate(HKEY("view_mailq_footer_listonly"),NULL, &SubTP); else @@ -393,6 +410,8 @@ void InitModule_SMTP_QUEUE (void) { + RegisterCTX(CTX_MAILQITEM); + RegisterCTX(CTX_MAILQ_RCPT); RegisterQItemHandler(HKEY("msgid"), QItem_Handle_MsgID); RegisterQItemHandler(HKEY("envelope_from"), QItem_Handle_EnvelopeFrom); @@ -410,7 +429,7 @@ InitModule_SMTP_QUEUE RegisterNamespace("MAILQ:SUBMITTED", 0, 0, tmplput_MailQSubmitted, NULL, CTX_MAILQITEM); RegisterNamespace("MAILQ:ENVELOPEFROM", 0, 1, tmplput_MailQEnvelopeFrom, NULL, CTX_MAILQITEM); RegisterNamespace("MAILQ:SRCROOM", 0, 1, tmplput_MailQSourceRoom, NULL, CTX_MAILQITEM); - RegisterConditional(HKEY("COND:MAILQ:HAVESRCROOM"), 0, Conditional_MailQ_HaveSourceRoom, CTX_MAILQITEM); + RegisterConditional("COND:MAILQ:HAVESRCROOM", 0, Conditional_MailQ_HaveSourceRoom, CTX_MAILQITEM); RegisterNamespace("MAILQ:RETRY", 0, 0, tmplput_MailQRetry, NULL, CTX_MAILQITEM); RegisterNamespace("MAILQ:RCPT:ADDR", 0, 1, tmplput_MailQRCPT, NULL, CTX_MAILQ_RCPT); @@ -429,6 +448,7 @@ InitModule_SMTP_QUEUE NULL, qview_LoadMsgFromServer, qview_RenderView_or_Tail, - qview_Cleanup); + qview_Cleanup, + NULL); }