diff --git a/src/attrib-server.c b/src/attrib-server.c
index e705310..597a635 100644
--- a/src/attrib-server.c
+++ b/src/attrib-server.c
if (client_attr)
a = client_attr;
else
- attrib_db_update(a->handle, NULL, value, vlen);
+ attrib_db_update(a->handle, NULL, value, vlen, &a);
if (a->write_cb) {
status = a->write_cb(a, a->cb_user_data);
}
int attrib_db_update(uint16_t handle, bt_uuid_t *uuid, const uint8_t *value,
- int len)
+ int len, struct attribute **attr)
{
struct attribute *a;
GSList *l;
attrib_notify_clients(a);
+ if (attr)
+ *attr = a;
+
return 0;
}
return -ENOSYS;
}
- return attrib_db_update(handle, NULL, value, len);
+ return attrib_db_update(handle, NULL, value, len, NULL);
}
diff --git a/src/attrib-server.h b/src/attrib-server.h
index c03d3c5..38a1f05 100644
--- a/src/attrib-server.h
+++ b/src/attrib-server.h
struct attribute *attrib_db_add(uint16_t handle, bt_uuid_t *uuid, int read_reqs,
int write_reqs, const uint8_t *value, int len);
int attrib_db_update(uint16_t handle, bt_uuid_t *uuid, const uint8_t *value,
- int len);
+ int len, struct attribute **attr);
int attrib_db_del(uint16_t handle);
int attrib_gap_set(uint16_t uuid, const uint8_t *value, int len);
uint32_t attrib_create_sdp(uint16_t handle, const char *name);