2005-04-06 [paul] 1.0.4cvs4
authorPaul Mangan <paul@claws-mail.org>
Wed, 6 Apr 2005 07:33:29 +0000 (07:33 +0000)
committerPaul Mangan <paul@claws-mail.org>
Wed, 6 Apr 2005 07:33:29 +0000 (07:33 +0000)
* ChangeLog
* ChangeLog.jp
* src/send_message.c
* src/common/socket.c
sync with main, see ChangeLog 2005-04-05

ChangeLog
ChangeLog.claws
ChangeLog.jp
PATCHSETS
configure.ac
src/common/socket.c
src/send_message.c

index 4c7f8e8..9947755 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2005-04-05
+
+       * src/send_message.c: send_message_smtp(): consider EOF right after
+         QUIT successful (workaround for Gmail SMTP server).
+       * src/socket.c: ssl_read(), ssl_peek(): check EOF which violates the
+         SSL protocol.
+
+2005-03-25
+
+       * src/about.c: updated copyright year.
+
 2005-03-24
 
        * version 1.0.4
index b72099a..65229f1 100644 (file)
@@ -1,3 +1,11 @@
+2005-04-06 [paul]      1.0.4cvs4
+
+       * ChangeLog
+       * ChangeLog.jp
+       * src/send_message.c
+       * src/common/socket.c
+               sync with main, see ChangeLog 2005-04-05
+
 2005-04-04 [thorsten]  1.0.4cvs3
 
        * src/mh.c
index fefbeb2..2f2aedd 100644 (file)
@@ -1,3 +1,14 @@
+2005-04-05
+
+       * src/send_messages.c: send_message_smtp(): QUIT Ä¾¸å¤Î EOF ¤òÀ®¸ù¤È
+         ¤ß¤Ê¤¹¤è¤¦¤Ë¤·¤¿(Gmail ¤Î SMTP ¥µ¡¼¥Ð¤Ø¤ÎÂнè)¡£
+       * src/socket.c: ssl_read(), ssl_peek(): SSL ¥×¥í¥È¥³¥ë°ãÈ¿¤Î EOF ¤ò
+         ¥Á¥§¥Ã¥¯¡£
+
+2005-03-25
+
+       * src/about.c: Ãøºî¸¢¤Îǯ¤ò¹¹¿·¡£
+
 2005-03-24
 
        * version 1.0.4
index 4676080..ff496a0 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.481 -r 1.482 src/compose.c; cvs diff -u -r 1.10 -r 1.11 src/gtk/gtkaspell.c; ) > 1.0.4cvs1.patchset
 ( cvs diff -u -r 1.16 -r 1.17 src/common/socket.c; cvs diff -u -r 1.209 -r 1.210 src/imap.c; ) > 1.0.4cvs2.patchset
 ( cvs diff -u -r 1.88 -r 1.89 src/mh.c; ) > 1.0.4cvs3.patchset
+( cvs diff -u -r 1.460 -r 1.461 ChangeLog; cvs diff -u -r 1.455 -r 1.456 ChangeLog.jp; cvs diff -u -r 1.20 -r 1.21 src/send_message.c; cvs diff -u -r 1.17 -r 1.18 src/common/socket.c; ) > 1.0.4cvs4.patchset
index 495243f..6d1084e 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=0
 MICRO_VERSION=4
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=3
+EXTRA_VERSION=4
 EXTRA_RELEASE=
 
 if test \( $EXTRA_VERSION -eq 0 \) -o \( "x$EXTRA_RELEASE" != "x" \); then
index c653303..5a0ad3e 100644 (file)
@@ -1047,7 +1047,7 @@ gint fd_read(gint fd, gchar *buf, gint len)
 #if USE_OPENSSL
 gint ssl_read(SSL *ssl, gchar *buf, gint len)
 {
-       gint ret;
+       gint err, ret;
 
        if (SSL_pending(ssl) == 0) {
                if (fd_check_io(SSL_get_rfd(ssl), G_IO_IN) < 0)
@@ -1056,14 +1056,19 @@ gint ssl_read(SSL *ssl, gchar *buf, gint len)
 
        ret = SSL_read(ssl, buf, len);
 
-       switch (SSL_get_error(ssl, ret)) {
+       switch ((err = SSL_get_error(ssl, ret))) {
        case SSL_ERROR_NONE:
                return ret;
        case SSL_ERROR_WANT_READ:
        case SSL_ERROR_WANT_WRITE:
                errno = EAGAIN;
                return -1;
+       case SSL_ERROR_ZERO_RETURN:
+               return 0;
        default:
+               g_warning("SSL_read() returned error %d, ret = %d\n", err, ret);
+               if (ret == 0)
+                       return 0;
                return -1;
        }
 }
@@ -1342,7 +1347,7 @@ gint sock_puts(SockInfo *sock, const gchar *buf)
 #if USE_OPENSSL
 gint ssl_peek(SSL *ssl, gchar *buf, gint len)
 {
-       gint ret;
+       gint err, ret;
 
        if (SSL_pending(ssl) == 0) {
                if (fd_check_io(SSL_get_rfd(ssl), G_IO_IN) < 0)
@@ -1351,14 +1356,19 @@ gint ssl_peek(SSL *ssl, gchar *buf, gint len)
 
        ret = SSL_peek(ssl, buf, len);
 
-       switch (SSL_get_error(ssl, ret)) {
+       switch ((err = SSL_get_error(ssl, ret))) {
        case SSL_ERROR_NONE:
                return ret;
        case SSL_ERROR_WANT_READ:
        case SSL_ERROR_WANT_WRITE:
                errno = EAGAIN;
                return -1;
+       case SSL_ERROR_ZERO_RETURN:
+               return 0;
        default:
+               g_warning("SSL_peek() returned error %d, ret = %d\n", err, ret);
+               if (ret == 0)
+                       return 0;
                return -1;
        }
 }
index 547d109..e4d4883 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2003 Hiroyuki Yamamoto
+ * Copyright (C) 1999-2005 Hiroyuki Yamamoto
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -412,6 +412,11 @@ gint send_message_smtp(PrefsAccount *ac_prefs, GSList *to_list, FILE *fp)
                        ac_prefs->tmp_smtp_pass = NULL;
                }
                ret = -1;
+       } else if (session->state == SESSION_EOF &&
+                  SMTP_SESSION(session)->state == SMTP_QUIT) {
+               /* consider EOF right after QUIT successful */
+               log_warning("%s\n", _("Connection closed by the remote host."));
+               ret = 0;
        } else if (session->state == SESSION_ERROR ||
                   session->state == SESSION_EOF ||
                   session->state == SESSION_TIMEOUT ||