aboutsummaryrefslogtreecommitdiffstats
path: root/mail
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@ximian.com>2001-04-23 10:15:45 +0800
committerJeffrey Stedfast <fejj@src.gnome.org>2001-04-23 10:15:45 +0800
commitdfc8e2ad3f8f0ce91c16a6538e28491699b0bc99 (patch)
tree945e6c2a77ac77d02038ce3ecd423c8a19a26660 /mail
parent29b0f2cffcc43b4d0d6ebf194ed8bc17fccd777f (diff)
downloadgsoc2013-evolution-dfc8e2ad3f8f0ce91c16a6538e28491699b0bc99.tar.gz
gsoc2013-evolution-dfc8e2ad3f8f0ce91c16a6538e28491699b0bc99.tar.zst
gsoc2013-evolution-dfc8e2ad3f8f0ce91c16a6538e28491699b0bc99.zip
Only set the X-Evolution-* header if that value is non-NULL.
2001-04-22 Jeffrey Stedfast <fejj@ximian.com> * mail-callbacks.c (composer_get_message): Only set the X-Evolution-* header if that value is non-NULL. * mail-ops.c (mail_send_message): Lets do proper refcounting on the sent-folder. Also, g_strdup() the sent_folder_uri since we later free it. If we don't, then we get lovely corrupt memory. svn path=/trunk/; revision=9498
Diffstat (limited to 'mail')
-rw-r--r--mail/ChangeLog7
-rw-r--r--mail/mail-callbacks.c14
-rw-r--r--mail/mail-ops.c24
3 files changed, 33 insertions, 12 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index a312b8ae00..3118d588dd 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,5 +1,12 @@
2001-04-22 Jeffrey Stedfast <fejj@ximian.com>
+ * mail-callbacks.c (composer_get_message): Only set the
+ X-Evolution-* header if that value is non-NULL.
+
+ * mail-ops.c (mail_send_message): Lets do proper refcounting on
+ the sent-folder. Also, g_strdup() the sent_folder_uri since we
+ later free it. If we don't, then we get lovely corrupt memory.
+
* mail-crypto.c (mail_crypto_pgp_mime_part_sign): Make sure we
have a context before we try and use it.
diff --git a/mail/mail-callbacks.c b/mail/mail-callbacks.c
index 871a63325e..b59e4efcb2 100644
--- a/mail/mail-callbacks.c
+++ b/mail/mail-callbacks.c
@@ -330,9 +330,17 @@ composer_get_message (EMsgComposer *composer)
/* Add info about the sending account */
account = e_msg_composer_get_preferred_account (composer);
if (account) {
- camel_medium_set_header (CAMEL_MEDIUM (message), "X-Evolution-Account", account->name);
- camel_medium_set_header (CAMEL_MEDIUM (message), "X-Evolution-Transport", account->transport->url);
- camel_medium_set_header (CAMEL_MEDIUM (message), "X-Evolution-Fcc", account->sent_folder_uri);
+ if (account->name)
+ camel_medium_set_header (CAMEL_MEDIUM (message), "X-Evolution-Account",
+ account->name);
+
+ if (account->transport && account->transport->url)
+ camel_medium_set_header (CAMEL_MEDIUM (message), "X-Evolution-Transport",
+ account->transport->url);
+
+ if (account->sent_folder_uri)
+ camel_medium_set_header (CAMEL_MEDIUM (message), "X-Evolution-Fcc",
+ account->sent_folder_uri);
}
return message;
diff --git a/mail/mail-ops.c b/mail/mail-ops.c
index 1ee9de5369..badb3b777f 100644
--- a/mail/mail-ops.c
+++ b/mail/mail-ops.c
@@ -502,31 +502,33 @@ mail_send_message(CamelMimeMessage *message, const char *destination, CamelFilte
header = camel_medium_get_header (CAMEL_MEDIUM (message), "X-Evolution-Account");
if (header) {
const MailConfigAccount *account;
-
+
account = mail_config_get_account_by_name (header);
camel_medium_remove_header (CAMEL_MEDIUM (message), "X-Evolution-Account");
if (account) {
transport_url = g_strdup (account->transport->url);
camel_medium_remove_header (CAMEL_MEDIUM (message), "X-Evolution-Transport");
- sent_folder_uri = account->sent_folder_uri;
+ sent_folder_uri = g_strdup (account->sent_folder_uri);
camel_medium_remove_header (CAMEL_MEDIUM (message), "X-Evolution-Fcc");
}
}
+
if (!transport_url) {
header = camel_medium_get_header (CAMEL_MEDIUM (message), "X-Evolution-Transport");
if (header) {
- transport_url = g_strstrip(g_strdup (header));
+ transport_url = g_strstrip (g_strdup (header));
camel_medium_remove_header (CAMEL_MEDIUM (message), "X-Evolution-Transport");
}
}
+
if (!sent_folder_uri) {
header = camel_medium_get_header (CAMEL_MEDIUM (message), "X-Evolution-Fcc");
if (header) {
- sent_folder_uri = g_strstrip(g_strdup (header));
+ sent_folder_uri = g_strstrip (g_strdup (header));
camel_medium_remove_header (CAMEL_MEDIUM (message), "X-Evolution-Fcc");
}
}
-
+
xport = camel_session_get_transport (session, transport_url ? transport_url : destination, ex);
g_free (transport_url);
if (!xport) {
@@ -553,13 +555,18 @@ mail_send_message(CamelMimeMessage *message, const char *destination, CamelFilte
folder = mail_tool_uri_to_folder (sent_folder_uri, NULL);
if (!folder) {
/* FIXME */
+ camel_object_ref (CAMEL_OBJECT (sent_folder));
folder = sent_folder;
}
- } else
+ } else {
+ camel_object_ref (CAMEL_OBJECT (sent_folder));
folder = sent_folder;
-
- if (folder)
+ }
+
+ if (folder) {
camel_folder_append_message (folder, message, info, ex);
+ camel_object_unref (CAMEL_OBJECT (folder));
+ }
camel_message_info_free (info);
}
@@ -997,7 +1004,6 @@ add_vtrash_info (CamelFolderInfo *info)
g_return_if_fail (info != NULL);
for (fi = info; fi->sibling; fi = fi->sibling) {
- g_warning ("add_vtrash_info(): url is %s", fi->url);
if (!strcmp (fi->name, _("Trash")))
break;
}