aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2007-07-20 04:38:56 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2007-07-20 04:38:56 +0000
commit9fff27c6dd65ad4995fa08bce2ff8daf268e5d62 (patch)
tree087b6c5b718e04cb748e95f62434730ba768fe4b
parentc53d8de733d96c2ab089b582814e94cc0c3a45da (diff)
ignore errors right after QUIT (workaround for Gmail SMTP server).
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@1873 ee746299-78ed-0310-b773-934348b2243d
-rw-r--r--ChangeLog7
-rw-r--r--ChangeLog.ja7
-rw-r--r--libsylph/socket.c5
-rw-r--r--src/send_message.c5
4 files changed, 24 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 135c03f4..7416afeb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2007-07-20
+
+ * libsylph/socket.c: ssl_read(); win32: set errno to EIO to avoid
+ random error message.
+ * src/send_message.c: send_message_smtp(): ignore errors right after
+ QUIT (workaround for Gmail SMTP server).
+
2007-07-18
* src/compose.c: compose_parse_source_msg(): fixed wrong null check.
diff --git a/ChangeLog.ja b/ChangeLog.ja
index c156cc70..4ca2a8a0 100644
--- a/ChangeLog.ja
+++ b/ChangeLog.ja
@@ -1,3 +1,10 @@
+2007-07-20
+
+ * libsylph/socket.c: ssl_read(); win32: 不規則なエラーメッセージを
+ 避けるために errno を EIO に設定するようにした。
+ * src/send_message.c: send_message_smtp(): QUIT 直後のエラーを無視する
+ ようにした(Gmail の SMTP サーバへの対策)。
+
2007-07-18
* src/compose.c: compose_parse_source_msg(): 誤ったnullチェックを修正。
diff --git a/libsylph/socket.c b/libsylph/socket.c
index a1600381..d4540366 100644
--- a/libsylph/socket.c
+++ b/libsylph/socket.c
@@ -1363,6 +1363,8 @@ gint ssl_read(SSL *ssl, gchar *buf, gint len)
{
gint err, ret;
+ errno = 0;
+
if (SSL_pending(ssl) == 0) {
if (fd_check_io(SSL_get_rfd(ssl), G_IO_IN) < 0)
return -1;
@@ -1383,6 +1385,9 @@ gint ssl_read(SSL *ssl, gchar *buf, gint len)
g_warning("SSL_read() returned error %d, ret = %d\n", err, ret);
if (ret == 0)
return 0;
+#ifdef G_OS_WIN32
+ errno = EIO;
+#endif
return -1;
}
}
diff --git a/src/send_message.c b/src/send_message.c
index a0c93c94..93b76215 100644
--- a/src/send_message.c
+++ b/src/send_message.c
@@ -755,6 +755,11 @@ static gint send_message_smtp(PrefsAccount *ac_prefs, GSList *to_list, FILE *fp)
/* consider EOF right after QUIT successful */
log_warning("%s\n", _("Connection closed by the remote host."));
ret = 0;
+ } else if (session->state == SESSION_ERROR &&
+ SMTP_SESSION(session)->state == SMTP_QUIT) {
+ /* ignore errors right after QUIT */
+ log_warning("%s\n", _("Error occurred after QUIT command (ignored)"));
+ ret = 0;
} else if (session->state == SESSION_ERROR ||
session->state == SESSION_EOF ||
session->state == SESSION_TIMEOUT ||