diff libpurple/connection.c @ 20115:a68d51d60177

Create purple_connection_ssl_error(), which converts a PurpleSslErrorType to a PurpleDisconnectReason then calls purple_connection_error_reason().
author Will Thompson <will.thompson@collabora.co.uk>
date Wed, 19 Sep 2007 15:00:48 +0000
parents a465779350aa
children ec3471ab96d6
line wrap: on
line diff
--- a/libpurple/connection.c	Wed Sep 19 11:39:42 2007 +0000
+++ b/libpurple/connection.c	Wed Sep 19 15:00:48 2007 +0000
@@ -525,6 +525,29 @@
 			purple_connection_get_account(gc));
 }
 
+void
+purple_connection_ssl_error (PurpleConnection *gc,
+                             PurpleSslErrorType ssl_error)
+{
+	PurpleDisconnectReason reason;
+
+	switch (ssl_error) {
+		case PURPLE_SSL_HANDSHAKE_FAILED:
+		case PURPLE_SSL_CONNECT_FAILED:
+			reason = PURPLE_REASON_ENCRYPTION_ERROR;
+			break;
+		case PURPLE_SSL_CERTIFICATE_INVALID:
+			/* TODO: maybe PURPLE_SSL_* should be more specific? */
+			reason = PURPLE_REASON_CERT_OTHER_ERROR;
+			break;
+		default:
+			g_assert_not_reached ();
+			reason = PURPLE_REASON_ENCRYPTION_ERROR;
+	}
+
+	purple_connection_error_reason (gc, reason, purple_ssl_strerror(ssl_error));
+}
+
 gboolean
 purple_connection_reason_is_fatal (PurpleDisconnectReason reason)
 {