- g_variant_get(child, "(a{sv})", &property);
- while (g_variant_iter_loop(property, "{sv}", &key, &val)) {
- if (strcasecmp(key, "PeerAddress") == 0) {
- const char *buf = g_variant_get_string(val, &len);
- peer_info->address = g_strdup(buf);
- MESH_LOGD(" Address : %s", peer_info->address);
- }
+ /* a{sv} <- (a{sv}) */
+ dict = g_variant_get_child_value(child, 0);
+ val = g_variant_lookup_value(dict, "PeerAddress", NULL);
+ if (NULL != val) {
+ const char *buf = g_variant_get_string(val, &len);
+ peer_info->address = g_strdup(buf);
+ MESH_LOGD(" Address : %s", peer_info->address);
+ g_variant_unref(val);
+ } else {
+ MESH_LOGE("Unable to get address !");
+ g_free(peer_info);
+ continue;