diff options
author | Grzegorz Kolodziejczyk <grzegorz.kolodziejczyk@codecoup.pl> | 2018-01-25 16:53:29 +0100 |
---|---|---|
committer | Szymon Janc <szymon.janc@codecoup.pl> | 2018-01-31 09:36:54 +0100 |
commit | d48fb168518694ca7a8eacd0c6cae4de310d37cd (patch) | |
tree | 1e2c91e0d0d8cca80ca05454967e36e54fd1311a /tools/btpclient.c | |
parent | 30d4b43590546461ad24446af27839fc4ad12b1f (diff) | |
download | bluez-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.c | 40 |
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(); |