From 9416d37d402245fc15dd431f6fc4c35a117fb907 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Thu, 18 Nov 2004 07:35:30 +0000
Subject: [PATCH] Bugfix: still initialize message header (e.g. version), even
 if msg->to==NULL. Only call smb_unlocksmbhdr() if the base header is locked
 upon exit.

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

diff --git a/src/smblib/smbadd.c b/src/smblib/smbadd.c
index e09a24531d..7450e778c4 100644
--- a/src/smblib/smbadd.c
+++ b/src/smblib/smbadd.c
@@ -237,9 +237,6 @@ int SMBCALL smb_addmsg(smb_t* smb, smbmsg_t* msg, int storage, long dupechk_hash
 			fflush(smb->sdt_fp);
 		}
 
-		if(msg->to==NULL)	/* no recipient, don't add header (required for bulkmail) */
-			break;
-
 		msg->hdr.version=smb_ver();
 		if(msg->hdr.when_imported.time==0) {
 			msg->hdr.when_imported.time=time(NULL);
@@ -297,6 +294,9 @@ int SMBCALL smb_addmsg(smb_t* smb, smbmsg_t* msg, int storage, long dupechk_hash
 		if(smb_addhashes(smb,hashes,/* skip_marked? */FALSE)==SMB_SUCCESS)
 			msg->flags|=MSG_FLAG_HASHED;
 
+		if(msg->to==NULL)	/* no recipient, don't add header (required for bulkmail) */
+			break;
+
 		retval=smb_addmsghdr(smb,msg,storage); /* calls smb_unlocksmbhdr() */
 
 	} while(0);
@@ -305,7 +305,8 @@ int SMBCALL smb_addmsg(smb_t* smb, smbmsg_t* msg, int storage, long dupechk_hash
 	if(retval!=SMB_SUCCESS)
 		smb_freemsg_dfields(smb,msg,1);
 
-	smb_unlocksmbhdr(smb);
+	if(smb->locked)
+		smb_unlocksmbhdr(smb);
 	FREE_AND_NULL(lzhbuf);
 	FREE_LIST(hashes,n);
 
-- 
GitLab