summaryrefslogtreecommitdiff
path: root/tools/btpclient.c
diff options
context:
space:
mode:
authorGrzegorz Kolodziejczyk <grzegorz.kolodziejczyk@codecoup.pl>2018-01-25 16:53:29 +0100
committerSzymon Janc <szymon.janc@codecoup.pl>2018-01-31 09:36:54 +0100
commitd48fb168518694ca7a8eacd0c6cae4de310d37cd (patch)
tree1e2c91e0d0d8cca80ca05454967e36e54fd1311a /tools/btpclient.c
parent30d4b43590546461ad24446af27839fc4ad12b1f (diff)
downloadbluez-d48fb168518694ca7a8eacd0c6cae4de310d37cd.tar.gz
tools/btpclient: Clear advertising data on reset
Advertising data should be cleared on gap reset command.
Diffstat (limited to 'tools/btpclient.c')
-rw-r--r--tools/btpclient.c40
1 files changed, 21 insertions, 19 deletions
diff --git a/tools/btpclient.c b/tools/btpclient.c
index 3c88f1496..bdc404dd9 100644
--- a/tools/btpclient.c
+++ b/tools/btpclient.c
@@ -390,6 +390,24 @@ static void unreg_advertising_setup(struct l_dbus_message *message,
l_dbus_message_builder_destroy(builder);
}
+static void ad_cleanup_service(void *service)
+{
+ struct service_data *s = service;
+
+ l_free(s->uuid);
+ l_free(s);
+}
+
+static void ad_cleanup(void)
+{
+ l_free(ad.local_name);
+ l_queue_destroy(ad.uuids, l_free);
+ l_queue_destroy(ad.services, ad_cleanup_service);
+ l_queue_destroy(ad.manufacturers, l_free);
+
+ memset(&ad, 0, sizeof(ad));
+}
+
static void unreg_advertising_reply(struct l_dbus_proxy *proxy,
struct l_dbus_message *result,
void *user_data)
@@ -417,6 +435,8 @@ static void unreg_advertising_reply(struct l_dbus_proxy *proxy,
l_info("Unable to remove propety instance");
if (!l_dbus_unregister_interface(dbus, AD_IFACE))
l_info("Unable to unregister ad interface");
+
+ ad_cleanup();
}
static void btp_gap_reset(uint8_t index, const void *param, uint16_t length,
@@ -449,7 +469,7 @@ static void btp_gap_reset(uint8_t index, const void *param, uint16_t length,
NULL);
}
- if (adapter->ad_proxy)
+ if (adapter->ad_proxy && ad.registered)
if (!l_dbus_proxy_method_call(adapter->ad_proxy,
"UnregisterAdvertisement",
unreg_advertising_setup,
@@ -646,24 +666,6 @@ failed:
btp_send_error(btp, BTP_GAP_SERVICE, index, status);
}
-static void ad_cleanup_service(void *service)
-{
- struct service_data *s = service;
-
- l_free(s->uuid);
- l_free(s);
-}
-
-static void ad_cleanup(void)
-{
- l_free(ad.local_name);
- l_queue_destroy(ad.uuids, l_free);
- l_queue_destroy(ad.services, ad_cleanup_service);
- l_queue_destroy(ad.manufacturers, l_free);
-
- memset(&ad, 0, sizeof(ad));
-}
-
static void ad_init(void)
{
ad.uuids = l_queue_new();