From 00117f91e48870bcc339b4b481306735e946fa23 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Sun, 13 Nov 2016 05:50:30 +0000
Subject: [PATCH] smb_addvote() now requires that the caller setup the
 msg.hdr.thread_back value first (performing any reply_id look-up necessary).
 That functionality was moved to postmsg.cpp->votemsg().

---
 src/smblib/smbadd.c | 18 ++++--------------
 1 file changed, 4 insertions(+), 14 deletions(-)

diff --git a/src/smblib/smbadd.c b/src/smblib/smbadd.c
index c982a979a5..45b2aac84a 100644
--- a/src/smblib/smbadd.c
+++ b/src/smblib/smbadd.c
@@ -321,7 +321,6 @@ int SMBCALL smb_addmsg(smb_t* smb, smbmsg_t* msg, int storage, long dupechk_hash
 int SMBCALL smb_addvote(smb_t* smb, smbmsg_t* msg, int storage)
 {
 	int			retval;
-	smbmsg_t	remsg;
 
 	if(!SMB_IS_OPEN(smb)) {
 		safe_snprintf(smb->last_error, sizeof(smb->last_error), "msgbase not open");
@@ -334,27 +333,18 @@ int SMBCALL smb_addvote(smb_t* smb, smbmsg_t* msg, int storage)
 	if(!(msg->hdr.attr&MSG_VOTE))
 		return SMB_ERR_HDR_ATTR;
 
+	if(msg->hdr.thread_back == 0)
+		return SMB_ERR_HDR_FIELD;
+
 	msg->hdr.type = SMB_MSG_TYPE_VOTE;
 
 	if(msg->hdr.when_imported.time == 0) {
 		msg->hdr.when_imported.time = (uint32_t)time(NULL);
-		msg->hdr.when_imported.zone = 0;	/* how do we detect system TZ? */
+		msg->hdr.when_imported.zone = 0;
 	}
 	if(msg->hdr.when_written.time == 0)	/* Uninitialized */
 		msg->hdr.when_written = msg->hdr.when_imported;
 
-	/* Look-up thread_back if RFC822 Reply-ID was specified */
-	if(msg->hdr.thread_back == 0 && msg->reply_id != NULL) {
-		if(smb_getmsgidx_by_msgid(smb, &remsg, msg->reply_id) == SMB_SUCCESS)
-			msg->hdr.thread_back = remsg.idx.number;	/* needed for threading backward */
-	}
-
-	/* Look-up thread_back if FTN REPLY was specified */
-	if(msg->hdr.thread_back == 0 && msg->ftn_reply != NULL) {
-		if(smb_getmsgidx_by_ftnid(smb, &remsg, msg->ftn_reply) == SMB_SUCCESS)
-			msg->hdr.thread_back = remsg.idx.number;	/* needed for threading backward */
-	}
-
 	retval = smb_addmsghdr(smb, msg, storage);
 
 	return retval;
-- 
GitLab