[evolution-data-server] camel_tcp_stream_ssl_enable_ssl(): Add GError parameter.



commit bee92a9f83f191cb480033e243551a8913af9a5a
Author: Matthew Barnes <mbarnes redhat com>
Date:   Tue Jul 5 00:06:46 2011 -0400

    camel_tcp_stream_ssl_enable_ssl(): Add GError parameter.

 camel/camel-tcp-stream-ssl.c                       |    7 +++++--
 camel/camel-tcp-stream-ssl.h                       |    3 ++-
 camel/providers/imap/camel-imap-store.c            |   10 +++++-----
 camel/providers/imapx/camel-imapx-server.c         |   11 +++++------
 camel/providers/pop3/camel-pop3-store.c            |   11 ++++++-----
 camel/providers/smtp/camel-smtp-transport.c        |   11 +++++------
 .../reference/camel/tmpl/camel-tcp-stream-ssl.sgml |    1 +
 7 files changed, 29 insertions(+), 25 deletions(-)
---
diff --git a/camel/camel-tcp-stream-ssl.c b/camel/camel-tcp-stream-ssl.c
index e21d5a8..bc943bd 100644
--- a/camel/camel-tcp-stream-ssl.c
+++ b/camel/camel-tcp-stream-ssl.c
@@ -831,13 +831,15 @@ camel_tcp_stream_ssl_new_raw (CamelSession *session,
 /**
  * camel_tcp_stream_ssl_enable_ssl:
  * @ssl: a #CamelTcpStreamSSL object
+ * @error: return location for a #GError, or %NULL
  *
  * Toggles an ssl-capable stream into ssl mode (if it isn't already).
  *
  * Returns: %0 on success or %-1 on fail
  **/
 gint
-camel_tcp_stream_ssl_enable_ssl (CamelTcpStreamSSL *ssl)
+camel_tcp_stream_ssl_enable_ssl (CamelTcpStreamSSL *ssl,
+                                 GError **error)
 {
 	PRFileDesc *fd, *ssl_fd;
 
@@ -848,13 +850,14 @@ camel_tcp_stream_ssl_enable_ssl (CamelTcpStreamSSL *ssl)
 	if (fd && !ssl->priv->ssl_mode) {
 		if (!(ssl_fd = enable_ssl (ssl, fd))) {
 			_set_errno_from_pr_error (PR_GetError ());
+			_set_g_error_from_errno (error, FALSE);
 			return -1;
 		}
 
 		_camel_tcp_stream_raw_replace_file_desc (CAMEL_TCP_STREAM_RAW (ssl), ssl_fd);
 		ssl->priv->ssl_mode = TRUE;
 
-		if (!rehandshake_ssl (ssl_fd, NULL)) /* NULL-GError */
+		if (!rehandshake_ssl (ssl_fd, error))
 			return -1;
 	}
 
diff --git a/camel/camel-tcp-stream-ssl.h b/camel/camel-tcp-stream-ssl.h
index daf3586..59041e9 100644
--- a/camel/camel-tcp-stream-ssl.h
+++ b/camel/camel-tcp-stream-ssl.h
@@ -79,7 +79,8 @@ CamelStream *	camel_tcp_stream_ssl_new	(CamelSession *session,
 CamelStream *	camel_tcp_stream_ssl_new_raw	(CamelSession *session,
 						 const gchar *expected_host,
 						 CamelTcpStreamSSLFlags flags);
-gint		camel_tcp_stream_ssl_enable_ssl	(CamelTcpStreamSSL *ssl);
+gint		camel_tcp_stream_ssl_enable_ssl	(CamelTcpStreamSSL *ssl,
+						 GError **error);
 
 G_END_DECLS
 
diff --git a/camel/providers/imap/camel-imap-store.c b/camel/providers/imap/camel-imap-store.c
index e5a56e5..45dd797 100644
--- a/camel/providers/imap/camel-imap-store.c
+++ b/camel/providers/imap/camel-imap-store.c
@@ -395,11 +395,11 @@ connect_to_server (CamelService *service,
 	camel_imap_response_free_without_processing (store, response);
 
 	/* Okay, now toggle SSL/TLS mode */
-	if (camel_tcp_stream_ssl_enable_ssl (CAMEL_TCP_STREAM_SSL (tcp_stream)) == -1) {
-		g_set_error (
-			error, CAMEL_ERROR, CAMEL_ERROR_GENERIC,
-			_("Failed to connect to IMAP server %s in secure mode: %s"),
-			url->host, _("SSL negotiations failed"));
+	if (camel_tcp_stream_ssl_enable_ssl (CAMEL_TCP_STREAM_SSL (tcp_stream), error) == -1) {
+		g_prefix_error (
+			error,
+			_("Failed to connect to IMAP server %s in secure mode: "),
+			url->host);
 		goto exception;
 	}
 #else
diff --git a/camel/providers/imapx/camel-imapx-server.c b/camel/providers/imapx/camel-imapx-server.c
index 3df3d14..fbc208b 100644
--- a/camel/providers/imapx/camel-imapx-server.c
+++ b/camel/providers/imapx/camel-imapx-server.c
@@ -3022,12 +3022,11 @@ imapx_connect_to_server (CamelIMAPXServer *is,
 
 		camel_imapx_command_free (ic);
 
-		if (camel_tcp_stream_ssl_enable_ssl (CAMEL_TCP_STREAM_SSL (tcp_stream)) == -1) {
-			g_set_error (
-				&local_error, CAMEL_ERROR,
-				CAMEL_ERROR_GENERIC,
-				_("Failed to connect to IMAP server %s in secure mode: %s"),
-				is->url->host, _("SSL negotiations failed"));
+		if (camel_tcp_stream_ssl_enable_ssl (CAMEL_TCP_STREAM_SSL (tcp_stream), &local_error) == -1) {
+			g_prefix_error (
+				&local_error,
+				_("Failed to connect to IMAP server %s in secure mode: "),
+				is->url->host);
 			goto exit;
 		}
 		/* Get new capabilities if they weren't already given */
diff --git a/camel/providers/pop3/camel-pop3-store.c b/camel/providers/pop3/camel-pop3-store.c
index 88e93a0..ff3d314 100644
--- a/camel/providers/pop3/camel-pop3-store.c
+++ b/camel/providers/pop3/camel-pop3-store.c
@@ -224,13 +224,14 @@ connect_to_server (CamelService *service,
 	}
 
 	/* Okay, now toggle SSL/TLS mode */
-	ret = camel_tcp_stream_ssl_enable_ssl (CAMEL_TCP_STREAM_SSL (tcp_stream));
+	ret = camel_tcp_stream_ssl_enable_ssl (
+		CAMEL_TCP_STREAM_SSL (tcp_stream), error);
 
 	if (ret == -1) {
-		g_set_error (
-			error, CAMEL_ERROR, CAMEL_ERROR_GENERIC,
-			_("Failed to connect to POP server %s in secure mode: %s"),
-			url->host, _("TLS negotiations failed"));
+		g_prefix_error (
+			error,
+			_("Failed to connect to POP server %s in secure mode: "),
+			url->host);
 		goto stls_exception;
 	}
 #else
diff --git a/camel/providers/smtp/camel-smtp-transport.c b/camel/providers/smtp/camel-smtp-transport.c
index 4f49586..0da8e8d 100644
--- a/camel/providers/smtp/camel-smtp-transport.c
+++ b/camel/providers/smtp/camel-smtp-transport.c
@@ -273,12 +273,11 @@ connect_to_server (CamelService *service,
 	} while (*(respbuf+3) == '-'); /* if we got "220-" then loop again */
 
 	/* Okay, now toggle SSL/TLS mode */
-	if (camel_tcp_stream_ssl_enable_ssl (CAMEL_TCP_STREAM_SSL (tcp_stream)) == -1) {
-		g_set_error (
-			error, G_IO_ERROR,
-			g_io_error_from_errno (errno),
-			_("Failed to connect to SMTP server %s in secure mode: %s"),
-			url->host, g_strerror (errno));
+	if (camel_tcp_stream_ssl_enable_ssl (CAMEL_TCP_STREAM_SSL (tcp_stream), error) == -1) {
+		g_prefix_error (
+			error,
+			_("Failed to connect to SMTP server %s in secure mode: "),
+			url->host);
 		goto exception_cleanup;
 	}
 #else
diff --git a/docs/reference/camel/tmpl/camel-tcp-stream-ssl.sgml b/docs/reference/camel/tmpl/camel-tcp-stream-ssl.sgml
index 5f8945e..01d6eab 100644
--- a/docs/reference/camel/tmpl/camel-tcp-stream-ssl.sgml
+++ b/docs/reference/camel/tmpl/camel-tcp-stream-ssl.sgml
@@ -65,6 +65,7 @@ CamelTcpStreamSSL
 </para>
 
 @ssl: 
+ error: 
 @Returns: 
 
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]