[Commits] [SCM] claws branch, master, updated. 3.9.3-56-g73a8781

claws at claws-mail.org claws at claws-mail.org
Thu Mar 27 17:16:41 CET 2014


The branch master of project "claws" (Claws Mail) has been updated
       via  73a8781b8463557a0ddabe7b1beb0507a4d2beca (commit)
      from  d6156962e24689e1be484b8a44a4841719bf4679 (commit)


- Log -----------------------------------------------------------------
commit 73a8781b8463557a0ddabe7b1beb0507a4d2beca
Author: Paul <paul at claws-mail.org>
Date:   Thu Mar 27 16:16:32 2014 +0000

    when using Redirect, use the redirecting account's address in the SMTP MAIL FROM

diff --git a/src/procheader.c b/src/procheader.c
index 4b7ff05..40f0260 100644
--- a/src/procheader.c
+++ b/src/procheader.c
@@ -401,6 +401,7 @@ enum
  	H_LIST_HELP        = 26,
  	H_LIST_ARCHIVE     = 27,
  	H_LIST_OWNER       = 28,
+ 	H_RESENT_FROM      = 29,
 };
 
 static HeaderEntry hentry_full[] = {{"Date:",		NULL, FALSE},
@@ -432,6 +433,7 @@ static HeaderEntry hentry_full[] = {{"Date:",		NULL, FALSE},
 				   {"List-Help:",	NULL, TRUE},
  				   {"List-Archive:",	NULL, TRUE},
  				   {"List-Owner:",	NULL, TRUE},
+ 				   {"Resent-From:",	NULL, TRUE},
 				   {NULL,		NULL, FALSE}};
 
 static HeaderEntry hentry_short[] = {{"Date:",		NULL, FALSE},
@@ -745,6 +747,12 @@ static MsgInfo *parse_stream(void *data, gboolean isstring, MsgFlags flags,
 			if (msginfo->extradata->list_owner) break;
 			msginfo->extradata->list_owner = g_strdup(hp);
 			break;
+		case H_RESENT_FROM:
+			if (!msginfo->extradata)
+				msginfo->extradata = g_new0(MsgInfoExtraData, 1);
+			if (msginfo->extradata->resent_from) break;
+			msginfo->extradata->resent_from = g_strdup(hp);
+			break;
 /* end list infos */
 		default:
 			break;
diff --git a/src/procmsg.c b/src/procmsg.c
index 767fe64..cc10712 100644
--- a/src/procmsg.c
+++ b/src/procmsg.c
@@ -1352,6 +1352,7 @@ MsgInfo *procmsg_msginfo_copy(MsgInfo *msginfo)
 		MEMBDUP(extradata->list_help);
 		MEMBDUP(extradata->list_archive);
 		MEMBDUP(extradata->list_owner);
+		MEMBDUP(extradata->resent_from);
 	}
 
         refs = msginfo->references;
@@ -1417,6 +1418,9 @@ MsgInfo *procmsg_msginfo_get_full_info_from_file(MsgInfo *msginfo, const gchar *
 		if (!msginfo->extradata->account_login && full_msginfo->extradata->account_login)
 			msginfo->extradata->account_login = g_strdup
 				(full_msginfo->extradata->account_login);
+		if (!msginfo->extradata->resent_from && full_msginfo->extradata->resent_from)
+			msginfo->extradata->resent_from = g_strdup
+				(full_msginfo->extradata->resent_from);
 	}
 	procmsg_msginfo_free(full_msginfo);
 
@@ -1490,6 +1494,7 @@ void procmsg_msginfo_free(MsgInfo *msginfo)
 		g_free(msginfo->extradata->partial_recv);
 		g_free(msginfo->extradata->account_server);
 		g_free(msginfo->extradata->account_login);
+		g_free(msginfo->extradata->resent_from);
 		g_free(msginfo->extradata);
 	}
 	slist_free_strings_full(msginfo->references);
@@ -1555,6 +1560,8 @@ guint procmsg_msginfo_memusage(MsgInfo *msginfo)
 			memusage += strlen(msginfo->extradata->account_server);
 		if (msginfo->extradata->account_login)
 			memusage += strlen(msginfo->extradata->account_login);
+		if (msginfo->extradata->resent_from)
+			memusage += strlen(msginfo->extradata->resent_from);
 
 		if (msginfo->extradata->list_post)
 			memusage += strlen(msginfo->extradata->list_post);
diff --git a/src/procmsg.h b/src/procmsg.h
index 52b04c0..23ebe85 100644
--- a/src/procmsg.h
+++ b/src/procmsg.h
@@ -244,6 +244,8 @@ struct _MsgInfoExtraData
 	gchar *dispositionnotificationto;
 	gchar *returnreceiptto;
 
+	gchar *resent_from;
+
 	/* used only for partially received messages */
 	gchar *partial_recv;
 	gchar *account_server;
diff --git a/src/send_message.c b/src/send_message.c
index 3cf8204..d51994d 100644
--- a/src/send_message.c
+++ b/src/send_message.c
@@ -231,10 +231,13 @@ gint send_message_smtp_full(PrefsAccount *ac_prefs, GSList *to_list, FILE *fp, g
 	 * because it's editable. */
 
 	fp_pos = ftell(fp);
-	tmp_msginfo = procheader_parse_stream(fp, flags, FALSE, FALSE);
+	tmp_msginfo = procheader_parse_stream(fp, flags, TRUE, FALSE);
 	fseek(fp, fp_pos, SEEK_SET);
-	
-	if (tmp_msginfo && tmp_msginfo->from) {
+
+	if (tmp_msginfo && tmp_msginfo->extradata && tmp_msginfo->extradata->resent_from) {
+		strncpy2(spec_from, tmp_msginfo->extradata->resent_from, BUFFSIZE-1);
+		extract_address(spec_from);
+	} else if (tmp_msginfo && tmp_msginfo->from) {
 		strncpy2(spec_from, tmp_msginfo->from, BUFFSIZE-1);
 		extract_address(spec_from);
 	} else {

-----------------------------------------------------------------------

Summary of changes:
 src/procheader.c   |    8 ++++++++
 src/procmsg.c      |    7 +++++++
 src/procmsg.h      |    2 ++
 src/send_message.c |    9 ++++++---
 4 files changed, 23 insertions(+), 3 deletions(-)


hooks/post-receive
-- 
Claws Mail


More information about the Commits mailing list