From 91c09b330abb6ef4fec9f36876fb12f0ffc16bf8 Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Sun, 3 Jan 2016 17:08:41 +0100 Subject: [PATCH] If we find '/' in message IDs, only use the following characters to calculate the thread hash, so we can identify threads by wiki page ids. --- webcit/msg_renderers.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/webcit/msg_renderers.c b/webcit/msg_renderers.c index d65d0d13b..9b1c7eec9 100644 --- a/webcit/msg_renderers.c +++ b/webcit/msg_renderers.c @@ -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, -- 2.30.2