summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.dentz@openbossa.org>2008-06-18 22:28:07 +0000
committerLuiz Augusto von Dentz <luiz.dentz@openbossa.org>2008-06-18 22:28:07 +0000
commit95e5960735be4066d43f77d91ebe78771cd76a43 (patch)
tree92ed938c3aeaed8de14cd713255c7ac511c35dd6
parent72b1f5668dee842f457d57a8e33afe26900ae14d (diff)
Make RemoveDevice to return when the device is busy discovering services.
-rw-r--r--hcid/adapter.c2
-rw-r--r--hcid/device.c17
2 files changed, 10 insertions, 9 deletions
diff --git a/hcid/adapter.c b/hcid/adapter.c
index 281dd86c..43a3a8b4 100644
--- a/hcid/adapter.c
+++ b/hcid/adapter.c
@@ -4055,7 +4055,7 @@ static DBusMessage *remove_device(DBusConnection *conn,
"Device does not exist");
device = l->data;
- if (device->temporary)
+ if (device->temporary || device->discov_active)
return g_dbus_create_error(msg,
ERROR_INTERFACE ".DoesNotExist",
"Device creation in progress");
diff --git a/hcid/device.c b/hcid/device.c
index 6736bb54..c0e64564 100644
--- a/hcid/device.c
+++ b/hcid/device.c
@@ -1071,14 +1071,6 @@ static DBusMessage *discover_services(DBusConnection *conn,
goto fail;
}
- device->discov_active = 1;
- device->discov_requestor = g_strdup(dbus_message_get_sender(msg));
- /* track the request owner to cancel it automatically if the owner
- * exits */
- device->discov_listener = g_dbus_add_disconnect_watch(conn,
- dbus_message_get_sender(msg),
- discover_services_req_exit,
- device, NULL);
return NULL;
fail:
@@ -1489,6 +1481,15 @@ int device_browse(struct device *device, DBusConnection *conn,
req->browse = TRUE;
}
+ device->discov_active = 1;
+ device->discov_requestor = g_strdup(dbus_message_get_sender(msg));
+ /* track the request owner to cancel it automatically if the owner
+ * exits */
+ device->discov_listener = g_dbus_add_disconnect_watch(conn,
+ dbus_message_get_sender(msg),
+ discover_services_req_exit,
+ device, NULL);
+
return bt_search_service(&src, &dst, &uuid, browse_cb, req, NULL);
}