Do not add MainChannel to property list when HDP first reliable channel does not exist. Upon channel destruction, ChannelDeleted signal is already emitted. This also fixes a crash where MainChannel was filled with invalid path "" when first reliable channel did not exist. --- health/hdp.c | 15 +++------------ 1 files changed, 3 insertions(+), 12 deletions(-) diff --git a/health/hdp.c b/health/hdp.c index 812352f..455240c 100644 --- a/health/hdp.c +++ b/health/hdp.c @@ -723,14 +723,8 @@ static void health_channel_destroy(void *data) DBUS_TYPE_INVALID); if (hdp_chan == dev->fr) { - char *empty_path; - hdp_channel_unref(dev->fr); dev->fr = NULL; - empty_path = "/"; - emit_property_changed(dev->conn, device_get_path(dev->dev), - HEALTH_DEVICE, "MainChannel", - DBUS_TYPE_OBJECT_PATH, &empty_path); } end: @@ -2061,7 +2055,6 @@ static DBusMessage *device_get_properties(DBusConnection *conn, struct hdp_device *device = user_data; DBusMessageIter iter, dict; DBusMessage *reply; - char *path; reply = dbus_message_new_method_return(msg); if (reply == NULL) @@ -2075,11 +2068,9 @@ static DBusMessage *device_get_properties(DBusConnection *conn, DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict); if (device->fr != NULL) - path = g_strdup(device->fr->path); - else - path = g_strdup(""); - dict_append_entry(&dict, "MainChannel", DBUS_TYPE_OBJECT_PATH, &path); - g_free(path); + dict_append_entry(&dict, "MainChannel", DBUS_TYPE_OBJECT_PATH, + &device->fr->path); + dbus_message_iter_close_container(&iter, &dict); return reply; -- 1.7.5.4 -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html