2012-03-27 13:03:25

by Elvis Pfutzenreuter

[permalink] [raw]
Subject: [PATCH v2] Omit MainChannel when HDP first reliable channel is nil

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



2012-03-28 09:39:28

by Johan Hedberg

[permalink] [raw]
Subject: Re: [PATCH v2] Omit MainChannel when HDP first reliable channel is nil

Hi Elvis,

On Tue, Mar 27, 2012, Elvis Pf?tzenreuter wrote:
> 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(-)

Applied. Thanks.

Johan