diff --git a/daemon/main.c b/daemon/main.c index 12a9a0e6..31b21dc8 100644 --- a/daemon/main.c +++ b/daemon/main.c @@ -42,6 +42,7 @@ #include "../catdup.h" #include "dirhelpers.h" #include "../proxies/a2j_proxy.h" +#include "../proxies/jmcore_proxy.h" bool g_quit; const char * g_dbus_unique_name; @@ -292,11 +293,19 @@ int main(int argc, char ** argv, char ** envp) /* setup our SIGSEGV magic that prints nice stack in our logfile */ setup_sigsegv(); - a2j_proxy_init(); + if (!a2j_proxy_init()) + { + goto uninit_dbus; + } + + if (!jmcore_proxy_init()) + { + goto uninit_a2j; + } if (!studio_init()) { - goto uninit_dbus; + goto uninit_jmcore; } while (!g_quit) @@ -314,6 +323,10 @@ int main(int argc, char ** argv, char ** envp) studio_uninit(); +uninit_jmcore: + jmcore_proxy_uninit(); + +uninit_a2j: a2j_proxy_uninit(); uninit_dbus: diff --git a/proxies/jmcore_proxy.c b/proxies/jmcore_proxy.c index 6156ceb1..ddc19297 100644 --- a/proxies/jmcore_proxy.c +++ b/proxies/jmcore_proxy.c @@ -47,6 +47,8 @@ bool jmcore_proxy_init(void) void jmcore_proxy_uninit(void) { + dbus_unregister_object_signal_hooks(g_dbus_connection, JMCORE_SERVICE_NAME, JMCORE_OBJECT_PATH, JMCORE_IFACE); + dbus_unregister_service_lifetime_hook(g_dbus_connection, JMCORE_SERVICE_NAME); } const int64_t jmcore_proxy_get_pid_cached(void)