Patchwork P2P: Fix Dbus property getters to default to "/" for Group, PeerGO

login
register
mail settings
Submitter nirav shah
Date April 10, 2012, 4:36 p.m.
Message ID <1334075767-29463-1-git-send-email-nirav.j2.shah@intel.com>
Download mbox | patch
Permalink /patch/151673/
State Accepted
Commit 445335fd8692365e09c05c7b0b8899df7adfbff0
Headers show

Comments

nirav shah - April 10, 2012, 4:36 p.m.
The Dbus property getters should not return an error when the
properties are not valid/relevant. Returning an error breaks the
GetAll method in the dbus interface. Changing Group and PeerGO
property getters to make GetAll work on P2PDevice.

Signed-hostap: Nirav Shah <nirav.j2.shah@intel.com>
Signed-hostap: Angie Chinchilla <angie.v.chinchilla@intel.com>
intended-for: hostap-1
---
 wpa_supplicant/dbus/dbus_new_handlers_p2p.c |   17 +++++++++++------
 1 files changed, 11 insertions(+), 6 deletions(-)
Jouni Malinen - April 14, 2012, 6 p.m.
On Tue, Apr 10, 2012 at 09:36:07AM -0700, nirav shah wrote:
> The Dbus property getters should not return an error when the
> properties are not valid/relevant. Returning an error breaks the
> GetAll method in the dbus interface. Changing Group and PeerGO
> property getters to make GetAll work on P2PDevice.

Thanks, applied.

Patch

diff --git a/wpa_supplicant/dbus/dbus_new_handlers_p2p.c b/wpa_supplicant/dbus/dbus_new_handlers_p2p.c
index 62930c7..fb89de9 100644
--- a/wpa_supplicant/dbus/dbus_new_handlers_p2p.c
+++ b/wpa_supplicant/dbus/dbus_new_handlers_p2p.c
@@ -1140,13 +1140,17 @@  dbus_bool_t wpas_dbus_getter_p2p_group(DBusMessageIter *iter, DBusError *error,
 				       void *user_data)
 {
 	struct wpa_supplicant *wpa_s = user_data;
+	char path_buf[WPAS_DBUS_OBJECT_PATH_MAX];
+	char *dbus_groupobj_path = path_buf;
 
 	if (wpa_s->dbus_groupobj_path == NULL)
-		return FALSE;
+		os_snprintf(dbus_groupobj_path, WPAS_DBUS_OBJECT_PATH_MAX, "/");
+	else
+		os_snprintf(dbus_groupobj_path, WPAS_DBUS_OBJECT_PATH_MAX,
+				 "%s", wpa_s->dbus_groupobj_path);
 
 	return wpas_dbus_simple_property_getter(iter, DBUS_TYPE_OBJECT_PATH,
-						&wpa_s->dbus_groupobj_path,
-						error);
+						&dbus_groupobj_path, error);
 }
 
 
@@ -1157,11 +1161,12 @@  dbus_bool_t wpas_dbus_getter_p2p_peergo(DBusMessageIter *iter,
 	char go_peer_obj_path[WPAS_DBUS_OBJECT_PATH_MAX], *path;
 
 	if (wpas_get_p2p_role(wpa_s) != WPAS_P2P_ROLE_CLIENT)
-		return FALSE;
-
-	os_snprintf(go_peer_obj_path, WPAS_DBUS_OBJECT_PATH_MAX,
+		os_snprintf(go_peer_obj_path, WPAS_DBUS_OBJECT_PATH_MAX, "/");
+	else
+		os_snprintf(go_peer_obj_path, WPAS_DBUS_OBJECT_PATH_MAX,
 		    "%s/" WPAS_DBUS_NEW_P2P_PEERS_PART "/" COMPACT_MACSTR,
 		    wpa_s->dbus_new_path, MAC2STR(wpa_s->go_dev_addr));
+
 	path = go_peer_obj_path;
 	return wpas_dbus_simple_property_getter(iter, DBUS_TYPE_OBJECT_PATH,
 						&path, error);