* [PATCH] Use reference counting of the device object while discovering services
@ 2010-11-10 21:55 Claudio Takahasi
2010-11-10 21:56 ` [PATCH] Fix possible memory leak of the GIOChannel in the attribute server Claudio Takahasi
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Claudio Takahasi @ 2010-11-10 21:55 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Claudio Takahasi
---
attrib/client.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/attrib/client.c b/attrib/client.c
index 1f2c217..955e623 100644
--- a/attrib/client.c
+++ b/attrib/client.c
@@ -158,6 +158,7 @@ static void gatt_service_free(void *user_data)
g_slist_free(gatt->primary);
g_attrib_unref(gatt->attrib);
g_free(gatt->path);
+ btd_device_unref(gatt->dev);
g_free(gatt);
}
@@ -1335,7 +1336,7 @@ int attrib_client_register(struct btd_device *device, int psm)
device_get_address(device, &dba);
gatt = g_new0(struct gatt_service, 1);
- gatt->dev = device;
+ gatt->dev = btd_device_ref(device);
gatt->listen = FALSE;
gatt->path = g_strdup(path);
bacpy(&gatt->sba, &sba);
--
1.7.3.2
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH] Fix possible memory leak of the GIOChannel in the attribute server 2010-11-10 21:55 [PATCH] Use reference counting of the device object while discovering services Claudio Takahasi @ 2010-11-10 21:56 ` Claudio Takahasi 2010-11-11 10:09 ` Johan Hedberg 2010-11-10 21:56 ` [PATCH] Add a new configuration option to disable Low Energy support Claudio Takahasi 2010-11-11 10:08 ` [PATCH] Use reference counting of the device object while discovering services Johan Hedberg 2 siblings, 1 reply; 8+ messages in thread From: Claudio Takahasi @ 2010-11-10 21:56 UTC (permalink / raw) To: linux-bluetooth; +Cc: Claudio Takahasi --- src/attrib-server.c | 32 +++++++++++++++++++------------- 1 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/attrib-server.c b/src/attrib-server.c index 1fc1c18..f644091 100644 --- a/src/attrib-server.c +++ b/src/attrib-server.c @@ -609,6 +609,20 @@ int attrib_server_init(void) return -1; } + record = server_record_new(); + if (record == NULL) { + error("Unable to create GATT service record"); + goto failed; + } + + if (add_record_to_server(BDADDR_ANY, record) < 0) { + error("Failed to register GATT service record"); + sdp_record_free(record); + goto failed; + } + + sdp_handle = record->handle; + /* LE socket */ le_io = bt_io_listen(BT_IO_L2CAP, NULL, confirm_event, NULL, NULL, &gerr, @@ -623,21 +637,13 @@ int attrib_server_init(void) /* Doesn't have LE support, continue */ } - record = server_record_new(); - if (record == NULL) { - error("Unable to create GATT service record"); - return -1; - } - - if (add_record_to_server(BDADDR_ANY, record) < 0) { - error("Failed to register GATT service record"); - sdp_record_free(record); - return -1; - } + return 0; - sdp_handle = record->handle; +failed: + g_io_channel_unref(l2cap_io); + l2cap_io = NULL; - return 0; + return -1; } void attrib_server_exit(void) -- 1.7.3.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] Fix possible memory leak of the GIOChannel in the attribute server 2010-11-10 21:56 ` [PATCH] Fix possible memory leak of the GIOChannel in the attribute server Claudio Takahasi @ 2010-11-11 10:09 ` Johan Hedberg 0 siblings, 0 replies; 8+ messages in thread From: Johan Hedberg @ 2010-11-11 10:09 UTC (permalink / raw) To: Claudio Takahasi; +Cc: linux-bluetooth Hi Claudio, On Wed, Nov 10, 2010, Claudio Takahasi wrote: > --- > src/attrib-server.c | 32 +++++++++++++++++++------------- > 1 files changed, 19 insertions(+), 13 deletions(-) Pushed upstream. Thanks. Johan ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] Add a new configuration option to disable Low Energy support 2010-11-10 21:55 [PATCH] Use reference counting of the device object while discovering services Claudio Takahasi 2010-11-10 21:56 ` [PATCH] Fix possible memory leak of the GIOChannel in the attribute server Claudio Takahasi @ 2010-11-10 21:56 ` Claudio Takahasi 2010-11-11 9:18 ` Johan Hedberg 2010-11-11 10:08 ` [PATCH] Use reference counting of the device object while discovering services Johan Hedberg 2 siblings, 1 reply; 8+ messages in thread From: Claudio Takahasi @ 2010-11-10 21:56 UTC (permalink / raw) To: linux-bluetooth; +Cc: Claudio Takahasi Disable LE interleave discovery and attribute server over LE link. Option required to force disabling Low energy support for LE capable adapters. --- src/adapter.c | 2 +- src/attrib-server.c | 4 ++++ src/hcid.h | 1 + src/main.c | 7 +++++++ src/main.conf | 7 ++++++- 5 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/adapter.c b/src/adapter.c index 31014e5..0741550 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -2082,7 +2082,7 @@ static int adapter_setup(struct btd_adapter *adapter, const char *mode) if (dev->features[7] & LMP_INQ_TX_PWR) adapter_ops->read_inq_tx_pwr(adapter->dev_id); - if (dev->features[4] & LMP_LE) { + if (dev->features[4] & LMP_LE && main_opts.le) { uint8_t simul = (dev->features[6] & LMP_LE_BREDR) ? 0x01 : 0x00; err = adapter_ops->write_le_host(adapter->dev_id, 0x01, simul); if (err < 0) { diff --git a/src/attrib-server.c b/src/attrib-server.c index f644091..375b731 100644 --- a/src/attrib-server.c +++ b/src/attrib-server.c @@ -40,6 +40,7 @@ #include "glib-helper.h" #include "btio.h" #include "sdpd.h" +#include "hcid.h" #include "att.h" #include "gattrib.h" @@ -623,6 +624,9 @@ int attrib_server_init(void) sdp_handle = record->handle; + if (!main_opts.le) + return 0; + /* LE socket */ le_io = bt_io_listen(BT_IO_L2CAP, NULL, confirm_event, NULL, NULL, &gerr, diff --git a/src/hcid.h b/src/hcid.h index 48d489a..a9484a6 100644 --- a/src/hcid.h +++ b/src/hcid.h @@ -56,6 +56,7 @@ struct main_opts { gboolean name_resolv; gboolean debug_keys; gboolean attrib_server; + gboolean le; uint8_t scan; uint8_t mode; diff --git a/src/main.c b/src/main.c index adbb374..9abdd60 100644 --- a/src/main.c +++ b/src/main.c @@ -222,6 +222,13 @@ static void parse_config(GKeyFile *config) else main_opts.attrib_server = boolean; + boolean = g_key_file_get_boolean(config, "General", + "EnableLE", &err); + if (err) + g_clear_error(&err); + else + main_opts.le = boolean; + main_opts.link_mode = HCI_LM_ACCEPT; main_opts.link_policy = HCI_LP_RSWITCH | HCI_LP_SNIFF | diff --git a/src/main.conf b/src/main.conf index f92bf42..c03f135 100644 --- a/src/main.conf +++ b/src/main.conf @@ -56,6 +56,11 @@ NameResolving = true # that they were created for. DebugKeys = false +# Enable Low Energy support if the dongle supports. Default is false. +# Enable/Disable interleave discovery and attribute server over LE. +EnableLE = false + # Enable the GATT Attribute Server. Default is false, because it is only -# useful for testing. +# useful for testing. Attribute server is not enabled over LE if EnableLE +# is false. AttributeServer = false -- 1.7.3.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] Add a new configuration option to disable Low Energy support 2010-11-10 21:56 ` [PATCH] Add a new configuration option to disable Low Energy support Claudio Takahasi @ 2010-11-11 9:18 ` Johan Hedberg 2010-11-11 13:20 ` Claudio Takahasi 0 siblings, 1 reply; 8+ messages in thread From: Johan Hedberg @ 2010-11-11 9:18 UTC (permalink / raw) To: Claudio Takahasi; +Cc: linux-bluetooth Hi Claudio, On Wed, Nov 10, 2010, Claudio Takahasi wrote: > @@ -623,6 +624,9 @@ int attrib_server_init(void) > > sdp_handle = record->handle; > > + if (!main_opts.le) > + return 0; > + If the option is called "le" it shouldn't affect GATT over BR/EDR, so I think the check in attrib_server_init should only affect the LE socket (or then rename the option to e.g. main.opts.attrib). Johan ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Add a new configuration option to disable Low Energy support 2010-11-11 9:18 ` Johan Hedberg @ 2010-11-11 13:20 ` Claudio Takahasi 2010-11-11 13:30 ` Johan Hedberg 0 siblings, 1 reply; 8+ messages in thread From: Claudio Takahasi @ 2010-11-11 13:20 UTC (permalink / raw) To: Claudio Takahasi, linux-bluetooth Hi Johan, On Thu, Nov 11, 2010 at 7:18 AM, Johan Hedberg <johan.hedberg@gmail.com> wrote: > Hi Claudio, > > On Wed, Nov 10, 2010, Claudio Takahasi wrote: >> @@ -623,6 +624,9 @@ int attrib_server_init(void) >> >> sdp_handle = record->handle; >> >> + if (!main_opts.le) >> + return 0; >> + > > If the option is called "le" it shouldn't affect GATT over BR/EDR, so I > think the check in attrib_server_init should only affect the LE socket > (or then rename the option to e.g. main.opts.attrib). > > Johan > It is not affecting GATT over BR/EDR. bt_io_listen for BR/EDR is above this checking. My patch "[PATCH] Fix possible memory leak of the GIOChannel in the attribute server" switched the order of the bt_io_listen calls between BR/EDR and LE. I forgot to send these patches as patch sequence. Claudio. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Add a new configuration option to disable Low Energy support 2010-11-11 13:20 ` Claudio Takahasi @ 2010-11-11 13:30 ` Johan Hedberg 0 siblings, 0 replies; 8+ messages in thread From: Johan Hedberg @ 2010-11-11 13:30 UTC (permalink / raw) To: Claudio Takahasi; +Cc: linux-bluetooth Hi Claudio, > > If the option is called "le" it shouldn't affect GATT over BR/EDR, so I > > think the check in attrib_server_init should only affect the LE socket > > (or then rename the option to e.g. main.opts.attrib). > > It is not affecting GATT over BR/EDR. bt_io_listen for BR/EDR is above > this checking. > > My patch "[PATCH] Fix possible memory leak of the GIOChannel in the > attribute server" switched the order of the bt_io_listen calls between > BR/EDR and LE. I forgot to send these patches as patch sequence. Ok, then it's fine. The patch is now pushed upstram. Johan ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Use reference counting of the device object while discovering services 2010-11-10 21:55 [PATCH] Use reference counting of the device object while discovering services Claudio Takahasi 2010-11-10 21:56 ` [PATCH] Fix possible memory leak of the GIOChannel in the attribute server Claudio Takahasi 2010-11-10 21:56 ` [PATCH] Add a new configuration option to disable Low Energy support Claudio Takahasi @ 2010-11-11 10:08 ` Johan Hedberg 2 siblings, 0 replies; 8+ messages in thread From: Johan Hedberg @ 2010-11-11 10:08 UTC (permalink / raw) To: Claudio Takahasi; +Cc: linux-bluetooth Hi Claudio, On Wed, Nov 10, 2010, Claudio Takahasi wrote: > --- > attrib/client.c | 3 ++- > 1 files changed, 2 insertions(+), 1 deletions(-) Pushed upstream. Thanks. Johan ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2010-11-11 13:30 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-11-10 21:55 [PATCH] Use reference counting of the device object while discovering services Claudio Takahasi 2010-11-10 21:56 ` [PATCH] Fix possible memory leak of the GIOChannel in the attribute server Claudio Takahasi 2010-11-11 10:09 ` Johan Hedberg 2010-11-10 21:56 ` [PATCH] Add a new configuration option to disable Low Energy support Claudio Takahasi 2010-11-11 9:18 ` Johan Hedberg 2010-11-11 13:20 ` Claudio Takahasi 2010-11-11 13:30 ` Johan Hedberg 2010-11-11 10:08 ` [PATCH] Use reference counting of the device object while discovering services Johan Hedberg
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox