summaryrefslogtreecommitdiff
path: root/plugins/neard.c
diff options
context:
space:
mode:
authorSzymon Janc <szymon.janc@tieto.com>2013-02-15 13:09:14 +0100
committerJohan Hedberg <johan.hedberg@intel.com>2013-02-15 16:28:06 +0200
commit66d880d2327eef57445958a0108430ad227116c3 (patch)
tree94900dcfce2849938e594f35eaf687dc2238e683 /plugins/neard.c
parent30e2aaa3f80e77c9080e71e4a641a7df81a9958b (diff)
downloadbluez-66d880d2327eef57445958a0108430ad227116c3.tar.gz
neard: Use service name and not boolean to track if registered to neard
Diffstat (limited to 'plugins/neard.c')
-rw-r--r--plugins/neard.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/plugins/neard.c b/plugins/neard.c
index a1b385ea2..650ee3e29 100644
--- a/plugins/neard.c
+++ b/plugins/neard.c
@@ -49,7 +49,7 @@
#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 */
@@ -115,7 +115,7 @@ static void register_agent_cb(DBusPendingCall *call, void *user_data)
}
dbus_message_unref(reply);
- agent_registered = TRUE;
+ neard_service = g_strdup(dbus_message_get_sender(reply));
}
static void register_agent(void)
@@ -152,7 +152,8 @@ static void unregister_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");
@@ -237,7 +238,7 @@ static void read_local_complete(struct btd_adapter *adapter,
DBG("");
- if (!agent_registered) {
+ if (neard_service == NULL) {
dbus_message_unref(msg);
if (agent_register_postpone) {
@@ -269,7 +270,7 @@ static void bonding_complete(struct btd_adapter *adapter,
DBG("");
- if (!agent_registered) {
+ if (neard_service == NULL) {
dbus_message_unref(msg);
if (agent_register_postpone) {
@@ -777,7 +778,9 @@ static DBusMessage *release(DBusConnection *conn, DBusMessage *msg,
{
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);
@@ -824,8 +827,10 @@ static void neard_vanished(DBusConnection *conn, void *user_data)
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);
}
}
@@ -850,7 +855,7 @@ static void neard_exit(void)
g_dbus_remove_watch(btd_get_dbus_connection(), watcher_id);
watcher_id = 0;
- if (agent_registered)
+ if (neard_service != NULL)
unregister_agent();
}