commit be07bbb4a1bbdab9ebd1e9ae526c5d1ddd83a447
Author: Oswald Buddenhagen <[email protected]>
Date: Sun Oct 3 11:53:18 2010 +0200
don't hang after failed start_tls()
we'd send a LOGOUT command in plain text while the server was already
expecting an encrypted command, which would typically lead to waiting
for more data and thus an indefinite hang.
so close the socket immediately instead of letting the normal shutdown
path take care of it.
inspired by a patch by Steven Flintham.
src/drv_imap.c | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/drv_imap.c b/src/drv_imap.c
index dbdb1b1..53db79d 100644
--- a/src/drv_imap.c
+++ b/src/drv_imap.c
@@ -1280,7 +1280,7 @@ imap_open_store( store_conf_t *conf, store_t *oldctx )
#if HAVE_LIBSSL
if (srvc->use_imaps) {
if (start_tls( ctx ))
- goto bail;
+ goto ssl_bail;
use_ssl = 1;
}
#endif
@@ -1314,7 +1314,7 @@ imap_open_store( store_conf_t *conf, store_t *oldctx )
if (imap_exec( ctx, 0, "STARTTLS" ) != RESP_OK)
goto bail;
if (start_tls( ctx ))
- goto bail;
+ goto ssl_bail;
use_ssl = 1;
if (imap_exec( ctx, 0, "CAPABILITY" ) !=
RESP_OK)
@@ -1399,6 +1399,12 @@ imap_open_store( store_conf_t *conf, store_t *oldctx )
ctx->trashnc = 1;
return (store_t *)ctx;
+#if HAVE_LIBSSL
+ ssl_bail:
+ /* This avoids that we try to send LOGOUT to an unusable socket. */
+ close( imap->buf.sock.fd );
+ imap->buf.sock.fd = -1;
+#endif
bail:
imap_close_store( &ctx->gen );
return 0;
------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
isync-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/isync-devel