From b76f9bf45aca489bfe40c333a048be513410f36c Mon Sep 17 00:00:00 2001 From: Cosimo Cecchi Date: Tue, 24 Aug 2010 11:53:59 +0200 Subject: Use new certificate API in EmpathyServerTLSHandler --- libempathy/empathy-server-tls-handler.c | 43 ++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 14 deletions(-) (limited to 'libempathy/empathy-server-tls-handler.c') diff --git a/libempathy/empathy-server-tls-handler.c b/libempathy/empathy-server-tls-handler.c index 885a8ea25..6180fefea 100644 --- a/libempathy/empathy-server-tls-handler.c +++ b/libempathy/empathy-server-tls-handler.c @@ -54,29 +54,25 @@ G_DEFINE_TYPE_WITH_CODE (EmpathyServerTLSHandler, empathy_server_tls_handler, #define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyServerTLSHandler); static void -tls_certificate_constructed_cb (GObject *source, +tls_certificate_prepared_cb (GObject *source, GAsyncResult *result, gpointer user_data) { - EmpathyTLSCertificate *certificate; + EmpathyTLSCertificate *certificate = EMPATHY_TLS_CERTIFICATE (source); EmpathyServerTLSHandler *self = user_data; GError *error = NULL; EmpathyServerTLSHandlerPriv *priv = GET_PRIV (self); - certificate = empathy_tls_certificate_new_finish (result, &error); + empathy_tls_certificate_prepare_finish (certificate, result, &error); if (error != NULL) { g_simple_async_result_set_from_error (priv->async_init_res, error); g_error_free (error); } - else - { - priv->certificate = certificate; - } g_simple_async_result_complete_in_idle (priv->async_init_res); - g_object_unref (priv->async_init_res); + tp_clear_object (&priv->async_init_res); } static gboolean @@ -85,10 +81,9 @@ tls_handler_init_finish (GAsyncInitable *initable, GError **error) { gboolean retval = TRUE; - EmpathyServerTLSHandler *self = EMPATHY_SERVER_TLS_HANDLER (initable); - EmpathyServerTLSHandlerPriv *priv = GET_PRIV (self); - if (g_simple_async_result_propagate_error (priv->async_init_res, error)) + if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), + error)) retval = FALSE; return retval; @@ -105,13 +100,15 @@ tls_handler_init_async (GAsyncInitable *initable, const gchar *cert_object_path; const gchar *hostname; const gchar *bus_name; + TpDBusDaemon *dbus; + GError *error = NULL; EmpathyServerTLSHandler *self = EMPATHY_SERVER_TLS_HANDLER (initable); EmpathyServerTLSHandlerPriv *priv = GET_PRIV (self); g_assert (priv->channel != NULL); priv->async_init_res = g_simple_async_result_new (G_OBJECT (self), - callback, user_data, empathy_tls_certificate_new_async); + callback, user_data, empathy_server_tls_handler_new_async); properties = tp_channel_borrow_immutable_properties (priv->channel); hostname = tp_asv_get_string (properties, @@ -123,12 +120,30 @@ tls_handler_init_async (GAsyncInitable *initable, cert_object_path = tp_asv_get_object_path (properties, EMP_IFACE_CHANNEL_TYPE_SERVER_TLS_CONNECTION ".ServerCertificate"); bus_name = tp_proxy_get_bus_name (TP_PROXY (priv->channel)); + dbus = tp_proxy_get_dbus_daemon (TP_PROXY (priv->channel)); DEBUG ("Creating an EmpathyTLSCertificate for path %s, bus name %s", cert_object_path, bus_name); - empathy_tls_certificate_new_async (bus_name, cert_object_path, - tls_certificate_constructed_cb, self); + priv->certificate = empathy_tls_certificate_new (dbus, bus_name, + cert_object_path, &error); + + if (error != NULL) + { + DEBUG ("Unable to create the EmpathyTLSCertificate: error %s", + error->message); + + g_simple_async_result_set_from_error (priv->async_init_res, error); + g_simple_async_result_complete_in_idle (priv->async_init_res); + + g_error_free (error); + tp_clear_object (&priv->async_init_res); + + return; + } + + empathy_tls_certificate_prepare_async (priv->certificate, + tls_certificate_prepared_cb, self); } static void -- cgit v1.2.3