diff --git a/plugins/neard.c b/plugins/neard.c
index a1b385e..650ee3e 100644
--- a/plugins/neard.c
+++ b/plugins/neard.c
#define ERROR_INTERFACE "org.neard.HandoverAgent.Error"
static guint watcher_id = 0;
-static gboolean agent_registered = FALSE;
+static char *neard_service = NULL;
static gboolean agent_register_postpone = FALSE;
/* For NFC mimetype limits max OOB EIR size */
}
dbus_message_unref(reply);
- agent_registered = TRUE;
+ neard_service = g_strdup(dbus_message_get_sender(reply));
}
static void register_agent(void)
DBusMessage *message;
const char *path = AGENT_PATH;
- agent_registered = FALSE;
+ g_free(neard_service);
+ neard_service = NULL;
message = dbus_message_new_method_call(NEARD_NAME, NEARD_PATH,
NEARD_MANAGER_INTERFACE, "UnregisterHandoverAgent");
DBG("");
- if (!agent_registered) {
+ if (neard_service == NULL) {
dbus_message_unref(msg);
if (agent_register_postpone) {
DBG("");
- if (!agent_registered) {
+ if (neard_service == NULL) {
dbus_message_unref(msg);
if (agent_register_postpone) {
{
DBG("");
- agent_registered = FALSE;
+ g_free(neard_service);
+ neard_service = NULL;
+
g_dbus_unregister_interface(conn, AGENT_PATH, AGENT_INTERFACE);
return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
DBG("");
/* neard existed without unregistering agent */
- if (agent_registered) {
- agent_registered = FALSE;
+ if (neard_service != NULL) {
+ g_free(neard_service);
+ neard_service = NULL;
+
g_dbus_unregister_interface(conn, AGENT_PATH, AGENT_INTERFACE);
}
}
g_dbus_remove_watch(btd_get_dbus_connection(), watcher_id);
watcher_id = 0;
- if (agent_registered)
+ if (neard_service != NULL)
unregister_agent();
}