summaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2008-11-01 01:42:36 +0100
committerMarcel Holtmann <marcel@holtmann.org>2008-11-01 01:42:36 +0100
commitd6334b6272048696a26b3022a9dff6129c41f1ca (patch)
tree5d383930173c4e0ce65e56db07714737f081ba84 /plugins
parent330092231a0223b254287b65bfaccb63adbd42d2 (diff)
Fix handling of service records on any adapter object
Diffstat (limited to 'plugins')
-rw-r--r--plugins/service.c54
1 files changed, 38 insertions, 16 deletions
diff --git a/plugins/service.c b/plugins/service.c
index 6828fbb5..0d0efce5 100644
--- a/plugins/service.c
+++ b/plugins/service.c
@@ -386,7 +386,11 @@ static int add_xml_record(DBusConnection *conn, const char *sender,
return -EIO;
}
- adapter_get_address(serv_adapter->adapter, &src);
+ if (serv_adapter->adapter)
+ adapter_get_address(serv_adapter->adapter, &src);
+ else
+ bacpy(&src, BDADDR_ANY);
+
if (add_record_to_server(&src, sdp_record) < 0) {
error("Failed to register service record");
sdp_record_free(sdp_record);
@@ -401,7 +405,7 @@ static int add_xml_record(DBusConnection *conn, const char *sender,
exit_callback, user_record, NULL);
serv_adapter->records = g_slist_append(serv_adapter->records,
- user_record);
+ user_record);
debug("listener_id %d", user_record->listener_id);
@@ -424,7 +428,10 @@ static DBusMessage *update_record(DBusConnection *conn, DBusMessage *msg,
"Not Available");
}
- adapter_get_address(serv_adapter->adapter, &src);
+ if (serv_adapter->adapter)
+ adapter_get_address(serv_adapter->adapter, &src);
+ else
+ bacpy(&src, BDADDR_ANY);
sdp_record->handle = handle;
err = add_record_to_server(&src, sdp_record);
@@ -584,16 +591,20 @@ done:
dbus_connection_unref(auth->conn);
serv_adapter->pending_list = g_slist_remove(serv_adapter->pending_list,
- auth);
+ auth);
g_free(auth);
auth = next_pending(serv_adapter);
if (auth == NULL)
return;
- adapter_get_address(serv_adapter->adapter, &src);
+ if (serv_adapter->adapter)
+ adapter_get_address(serv_adapter->adapter, &src);
+ else
+ bacpy(&src, BDADDR_ANY);
+
btd_request_authorization(&src, &auth->dst,
- auth->uuid, auth_cb, serv_adapter);
+ auth->uuid, auth_cb, serv_adapter);
}
static DBusMessage *request_authorization(DBusConnection *conn,
@@ -601,7 +612,6 @@ static DBusMessage *request_authorization(DBusConnection *conn,
{
struct record_data *user_record;
struct service_adapter *serv_adapter = data;
- struct btd_adapter *adapter = serv_adapter->adapter;
sdp_record_t *record;
sdp_list_t *services;
const char *sender;
@@ -654,16 +664,21 @@ static DBusMessage *request_authorization(DBusConnection *conn,
str2ba(address, &auth->dst);
serv_adapter->pending_list = g_slist_append(serv_adapter->pending_list,
- auth);
+ auth);
auth = next_pending(serv_adapter);
if (auth == NULL)
return does_not_exist(msg);
- adapter_get_address(adapter, &src);
+ if (serv_adapter->adapter)
+ adapter_get_address(serv_adapter->adapter, &src);
+ else
+ bacpy(&src, BDADDR_ANY);
+
if (btd_request_authorization(&src, &auth->dst, auth->uuid, auth_cb,
- serv_adapter) < 0) {
- serv_adapter->pending_list = g_slist_remove(serv_adapter->pending_list, auth);
+ serv_adapter) < 0) {
+ serv_adapter->pending_list = g_slist_remove(serv_adapter->pending_list,
+ auth);
g_free(auth);
return not_authorized(msg);
}
@@ -676,7 +691,6 @@ static DBusMessage *cancel_authorization(DBusConnection *conn,
{
DBusMessage *reply;
struct service_adapter *serv_adapter = data;
- struct btd_adapter *adapter = serv_adapter->adapter;
struct pending_auth *auth;
const gchar *sender;
bdaddr_t src;
@@ -687,7 +701,11 @@ static DBusMessage *cancel_authorization(DBusConnection *conn,
if (auth == NULL)
return does_not_exist(msg);
- adapter_get_address(adapter, &src);
+ if (serv_adapter->adapter)
+ adapter_get_address(serv_adapter->adapter, &src);
+ else
+ bacpy(&src, BDADDR_ANY);
+
btd_cancel_authorization(&src, &auth->dst);
reply = not_authorized(auth->msg);
@@ -697,16 +715,20 @@ static DBusMessage *cancel_authorization(DBusConnection *conn,
dbus_connection_unref(auth->conn);
serv_adapter->pending_list = g_slist_remove(serv_adapter->pending_list,
- auth);
+ auth);
g_free(auth);
auth = next_pending(serv_adapter);
if (auth == NULL)
goto done;
- adapter_get_address(adapter, &src);
+ if (serv_adapter->adapter)
+ adapter_get_address(serv_adapter->adapter, &src);
+ else
+ bacpy(&src, BDADDR_ANY);
+
btd_request_authorization(&src, &auth->dst,
- auth->uuid, auth_cb, serv_adapter);
+ auth->uuid, auth_cb, serv_adapter);
done:
return dbus_message_new_method_return(msg);