From 7ed66fac42704097175f778660e391e86cc6d55d Mon Sep 17 00:00:00 2001
From: Jeffrey Stedfast <fejj@ximian.com>
Date: Fri, 27 Sep 2002 20:20:08 +0000
Subject: New function to decode the INTERNALDATE response from an IMAP server
 so we

2002-09-27  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/imap/camel-imap-folder.c (decode_internaldate): New
	function to decode the INTERNALDATE response from an IMAP server
	so we don't have to use my broken-date-parser routines.

2002-09-27  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/imap/camel-imap-store.c (connect_to_server):
	NULL-check the streams before unreffing them in the case of a
	failure during ssl negotiations.

	* camel-tcp-stream-ssl.c (camel_tcp_stream_ssl_enable_ssl): Check
	SSL_ResetHandshake() for errors. Also force a handshake after
	we've reset the handshake state on the socket.

svn path=/trunk/; revision=18252
---
 camel/camel-tcp-stream-ssl.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

(limited to 'camel/camel-tcp-stream-ssl.c')

diff --git a/camel/camel-tcp-stream-ssl.c b/camel/camel-tcp-stream-ssl.c
index ed539451ad..09e5c94a02 100644
--- a/camel/camel-tcp-stream-ssl.c
+++ b/camel/camel-tcp-stream-ssl.c
@@ -268,20 +268,22 @@ camel_tcp_stream_ssl_enable_ssl (CamelTcpStreamSSL *ssl)
 	g_return_val_if_fail (CAMEL_IS_TCP_STREAM_SSL (ssl), -1);
 	
 	if (ssl->priv->sockfd && !ssl->priv->ssl_mode) {
-		fd = enable_ssl (ssl, NULL);
-		if (fd == NULL) {
-			int errnosave;
-			
+		if (!(fd = enable_ssl (ssl, NULL))) {
 			set_errno (PR_GetError ());
-			errnosave = errno;
-			errno = errnosave;
-			
 			return -1;
 		}
 		
-		SSL_ResetHandshake (fd, FALSE);
-		
 		ssl->priv->sockfd = fd;
+		
+		if (SSL_ResetHandshake (fd, FALSE) == SECFailure) {
+			set_errno (PR_GetError ());
+			return -1;
+		}
+		
+		if (SSL_ForceHandshake (fd) == -1) {
+			set_errno (PR_GetError ());
+			return -1;
+		}
 	}
 	
 	ssl->priv->ssl_mode = TRUE;
-- 
cgit