aboutsummaryrefslogtreecommitdiff
path: root/src/send_message.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-11-22 07:21:07 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-11-22 07:21:07 +0000
commitf83afc56908b487f1d0d87d563eabf68c01b411c (patch)
treea7614bea8301779382a5c52eb15ad988191c1356 /src/send_message.c
parent6e181791b71430f018d8a78fd943b825349f1128 (diff)
reduced memory usage on SMTP session.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@771 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src/send_message.c')
-rw-r--r--src/send_message.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/send_message.c b/src/send_message.c
index 8072622a..ab67e90a 100644
--- a/src/send_message.c
+++ b/src/send_message.c
@@ -451,7 +451,7 @@ static gint send_message_smtp(PrefsAccount *ac_prefs, GSList *to_list, FILE *fp)
{
Session *session;
SMTPSession *smtp_session;
- gchar *out_str;
+ FILE *out_fp;
gushort port;
SendProgressDialog *dialog;
gchar buf[BUFFSIZE];
@@ -517,9 +517,17 @@ static gint send_message_smtp(PrefsAccount *ac_prefs, GSList *to_list, FILE *fp)
smtp_session->to_list = to_list;
smtp_session->cur_to = to_list;
- out_str = get_outgoing_rfc2822_str(fp);
- smtp_session->send_data = (guchar *)out_str;
- smtp_session->send_data_len = strlen(out_str);
+ out_fp = get_outgoing_rfc2822_file(fp);
+ if (!out_fp) {
+ session_destroy(session);
+ return -1;
+ }
+ smtp_session->send_data_fp = out_fp;
+ smtp_session->send_data_len = get_left_file_size(out_fp);
+ if (smtp_session->send_data_len < 0) {
+ session_destroy(session);
+ return -1;
+ }
#if USE_SSL
port = ac_prefs->set_smtpport ? ac_prefs->smtpport :