mirror of
https://git.kernel.org/pub/scm/bluetooth/bluez.git
synced 2024-12-14 06:25:08 +08:00
shared/gatt-client: Fix tracking current service during discovery
We should mark service as completed before trying to insert another characteristic - in case inserting characteristic for new service fails, previous one won't be discarded.
This commit is contained in:
parent
a07eb3a5e9
commit
806ba442da
@ -588,6 +588,19 @@ static bool discover_descs(struct discovery_op *op, bool *discovering)
|
||||
struct gatt_db_attribute *svc;
|
||||
uint16_t start, end;
|
||||
|
||||
/* Adjust current service */
|
||||
svc = gatt_db_get_service(client->db, chrc_data->value_handle);
|
||||
if (op->cur_svc != svc) {
|
||||
if (op->cur_svc) {
|
||||
queue_remove(op->pending_svcs, op->cur_svc);
|
||||
|
||||
/* Done with the current service */
|
||||
gatt_db_service_set_active(op->cur_svc, true);
|
||||
}
|
||||
|
||||
op->cur_svc = svc;
|
||||
}
|
||||
|
||||
attr = gatt_db_insert_characteristic(client->db,
|
||||
chrc_data->value_handle,
|
||||
&chrc_data->uuid, 0,
|
||||
@ -605,19 +618,6 @@ static bool discover_descs(struct discovery_op *op, bool *discovering)
|
||||
chrc_data->value_handle)
|
||||
goto failed;
|
||||
|
||||
/* Adjust current service */
|
||||
svc = gatt_db_get_service(client->db, chrc_data->value_handle);
|
||||
if (op->cur_svc != svc) {
|
||||
if (op->cur_svc) {
|
||||
queue_remove(op->pending_svcs, op->cur_svc);
|
||||
|
||||
/* Done with the current service */
|
||||
gatt_db_service_set_active(op->cur_svc, true);
|
||||
}
|
||||
|
||||
op->cur_svc = svc;
|
||||
}
|
||||
|
||||
gatt_db_attribute_get_service_handles(svc, &start, &end);
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user