Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/EionRobb/skype4pidgin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEion Robb <eion@robbmob.com>2011-04-08 17:25:18 +0400
committerEion Robb <eion@robbmob.com>2011-04-08 17:25:18 +0400
commit1727b1caa29dc0b86cb6a9d904fa0aad4f7d7ee5 (patch)
tree234033a5251d2ecb63afb348547ca1043d509d52 /skype_messaging_dbus.c
parenta2f70523635da275ca3fa67b041f34a145743139 (diff)
Awesome patch from skotlex which fixes crashes, hangs and memory leaks in the dbus version of the plugin. Fixes issue #148.
Diffstat (limited to 'skype_messaging_dbus.c')
-rw-r--r--skype_messaging_dbus.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/skype_messaging_dbus.c b/skype_messaging_dbus.c
index 5369d4b..9118d64 100644
--- a/skype_messaging_dbus.c
+++ b/skype_messaging_dbus.c
@@ -39,6 +39,7 @@ skype_notify_handler(DBusConnection *connection, DBusMessage *message, gpointer
dbus_message_iter_init(temp_message, &iterator);
if (dbus_message_iter_get_arg_type(&iterator) != DBUS_TYPE_STRING)
{
+ dbus_message_unref(message);
return FALSE;
}
@@ -53,6 +54,13 @@ skype_notify_handler(DBusConnection *connection, DBusMessage *message, gpointer
return DBUS_HANDLER_RESULT_HANDLED;
}
+static void
+skype_destroy_handler(GObject *sender, gpointer data)
+{
+ proxy = NULL;
+ skype_message_received(g_strdup("CONNSTATUS LOGGEDOUT"));
+}
+
static gboolean
skype_connect()
{
@@ -83,9 +91,14 @@ skype_connect()
if (proxy == NULL && error != NULL)
{
skype_debug_warning("skype_dbus", "%s\n", error->message);
+ g_error_free(error);
return FALSE;
}
-
+
+ g_signal_connect(G_OBJECT(proxy), "destroy", G_CALLBACK(skype_destroy_handler), NULL);
+#ifdef DBUS_MAJOR_VERSION
+ dbus_g_proxy_set_default_timeout(proxy, 3000);
+#endif
vtable.message_function = &skype_notify_handler;
dbus_connection_register_object_path(dbus_g_connection_get_connection(connection), "/com/Skype/Client", &vtable, NULL);
}