void purple_connection_ssl_error (PurpleConnection *gc, PurpleSslErrorType ssl_error) { PurpleConnectionError reason; switch (ssl_error) { case PURPLE_SSL_HANDSHAKE_FAILED: reason = PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR; break; case PURPLE_SSL_CONNECT_FAILED: reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR; break; case PURPLE_SSL_CERTIFICATE_INVALID: /* TODO: maybe PURPLE_SSL_* should be more specific? */ reason = PURPLE_CONNECTION_ERROR_CERT_OTHER_ERROR; break; default: g_assert_not_reached (); reason = PURPLE_CONNECTION_ERROR_CERT_OTHER_ERROR; } purple_connection_error_reason (gc, reason, purple_ssl_strerror(ssl_error)); }
static void _purple_socket_connected_tls_error(PurpleSslConnection *ssl_connection, PurpleSslErrorType error, gpointer _ps) { PurpleSocket *ps = _ps; ps->state = PURPLE_SOCKET_STATE_ERROR; ps->tls_connection = NULL; ps->cb(ps, purple_ssl_strerror(error), ps->cb_data); }
static void fb_mqtt_cb_open_error(PurpleSslConnection *ssl, PurpleSslErrorType error, gpointer data) { const gchar *str; FbMqtt *mqtt = data; FbMqttPrivate *priv = mqtt->priv; GError *err; str = purple_ssl_strerror(error); err = g_error_new_literal(FB_MQTT_SSL_ERROR, error, str); /* Do not call purple_ssl_close() from the error_func */ priv->gsc = NULL; g_signal_emit_by_name(mqtt, "error", err); g_error_free(err); }