OSDN Git Service

Fix duplicate characteristics
authorBruna Moreira <bruna.moreira@openbossa.org>
Thu, 20 Jan 2011 13:27:47 +0000 (09:27 -0400)
committerJohan Hedberg <johan.hedberg@nokia.com>
Fri, 21 Jan 2011 06:45:17 +0000 (12:15 +0530)
The Discover() operation (from DBus API) was registering the same
characteristics after running several times. This can be checked using
test-attrib.

attrib/client.c

index 767d1c1..44638d3 100644 (file)
@@ -870,6 +870,13 @@ static void char_discovered_cb(GSList *characteristics, guint8 status,
        for (l = characteristics; l; l = l->next) {
                struct att_char *current_chr = l->data;
                struct characteristic *chr;
+               guint handle = current_chr->value_handle;
+               GSList *lchr;
+
+               lchr = g_slist_find_custom(prim->chars,
+                       GUINT_TO_POINTER(handle), characteristic_handle_cmp);
+               if (lchr)
+                       continue;
 
                chr = g_new0(struct characteristic, 1);
                chr->prim = prim;