diff --git a/src/advertising.c b/src/advertising.c
index aee705b..04492f7 100644
--- a/src/advertising.c
+++ b/src/advertising.c
g_dbus_client_set_disconnect_watch(ad->client, NULL, NULL);
+ /* TODO: mgmt API call to remove advert */
+
queue_remove(ad->manager->ads, ad);
g_idle_add(advertisement_free_idle_cb, ad);
DBusMessage *msg,
void *user_data)
{
+ struct btd_advertising *manager = user_data;
+ DBusMessageIter args;
+ const char *path;
+ struct advertisement *ad;
+
DBG("UnregisterAdvertisement");
- /* TODO */
- return NULL;
+ if (!dbus_message_iter_init(msg, &args))
+ return btd_error_invalid_args(msg);
+
+ if (dbus_message_iter_get_arg_type(&args) != DBUS_TYPE_OBJECT_PATH)
+ return btd_error_invalid_args(msg);
+
+ dbus_message_iter_get_basic(&args, &path);
+
+ ad = queue_find(manager->ads, match_advertisement_path, path);
+ if (!ad)
+ return btd_error_does_not_exist(msg);
+
+ advertisement_remove(ad);
+
+ return dbus_message_new_method_return(msg);
}
static const GDBusMethodTable methods[] = {