]> code.citadel.org Git - citadel.git/blobdiff - webcit/msg_renderers.c
If we find '/' in message IDs, only use the following characters to calculate the...
[citadel.git] / webcit / msg_renderers.c
index 15abfddf5a67cd3d8e8fb7976fad4cfd4fab2ff3..9b1c7eec90e0258325134f9d4773486f25f038d9 100644 (file)
@@ -377,11 +377,17 @@ int Conditional_MAIL_SUMM_SUBJECT(StrBuf *Target, WCTemplputParams *TP)
 void examine_msgn(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
 {
        wcsession *WCC = WC;
+       long Offset = 0;
+       const char *pOffset;
 
        CheckConvertBufs(WCC);
        FreeStrBuf(&Msg->reply_inreplyto);
        Msg->reply_inreplyto = NewStrBufPlain(NULL, StrLength(HdrLine));
-       Msg->reply_inreplyto_hash = ThreadIdHash(HdrLine);
+       pOffset = strchr(ChrPtr(HdrLine), '/');
+       if (pOffset != NULL) {
+               Offset = pOffset - ChrPtr(HdrLine);
+       }
+       Msg->reply_inreplyto_hash = ThreadIdHashOffset(HdrLine, Offset);
        StrBuf_RFC822_2_Utf8(Msg->reply_inreplyto, 
                             HdrLine, 
                             WCC->DefaultCharset,
@@ -404,11 +410,17 @@ int Conditional_MAIL_SUMM_UNREAD(StrBuf *Target, WCTemplputParams *TP)
 void examine_wefw(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
 {
        wcsession *WCC = WC;
+       long Offset = 0;
+       const char *pOffset;
 
        CheckConvertBufs(WCC);
        FreeStrBuf(&Msg->reply_references);
        Msg->reply_references = NewStrBufPlain(NULL, StrLength(HdrLine));
-       Msg->reply_references_hash = ThreadIdHash(HdrLine);
+       pOffset = strchr(ChrPtr(HdrLine), '/');
+       if (pOffset != NULL) {
+               Offset = pOffset - ChrPtr(HdrLine);
+       }
+       Msg->reply_references_hash = ThreadIdHashOffset(HdrLine, Offset);
        StrBuf_RFC822_2_Utf8(Msg->reply_references, 
                             HdrLine, 
                             WCC->DefaultCharset, 
@@ -1016,11 +1028,11 @@ void tmplput_EDIT_WIKI_BODY(StrBuf *Target, WCTemplputParams *TP)
         * to do it again.
         */
        if (!havebstr("attach_button")) {
-               char *wikipage = strdup(bstr("page"));
+               StrBuf *wikipage = NewStrBufDup(sbstr("page"));
                putbstr("format", NewStrBufPlain(HKEY("plain")));
                str_wiki_index(wikipage);
-               msgnum = locate_message_by_uid(wikipage);
-               free(wikipage);
+               msgnum = locate_message_by_uid(ChrPtr(wikipage));
+               FreeStrBuf(&wikipage);
                if (msgnum >= 0L) {
                        Buf = NewStrBuf();
                        read_message(Buf, HKEY("view_message_wikiedit"), msgnum, NULL, &Mime, TP);