Re: [PATCH] client.c cleanup

Bastien Nocera <[email protected]>
Newsgroups gmane.linux.bluez.devel
Message-ID <[email protected]>
On Thu, 2008-01-31 at 17:48 +0000, Bastien Nocera wrote:
<snip>
> About the hcid bug, should GetInfo fail when the bdaddr for the device
> isn't available, or should it just give out empty information?

Patch to allow GetAddress to fail, and don't add the information that's
not available to the GetInfo dict.

Cheers

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

_______________________________________________
Bluez-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bluez-devel
bluez-utils-hcid-allow-getaddr-failure.patch (text/x-patch, 2.3 KB)
Index: adapter.c
===================================================================
RCS file: /cvsroot/bluez/utils/hcid/adapter.c,v
retrieving revision 1.13
diff -u -p -r1.13 adapter.c
--- adapter.c	28 Jan 2008 10:38:40 -0000	1.13
+++ adapter.c	1 Feb 2008 10:44:20 -0000
@@ -302,16 +302,18 @@ static DBusHandlerResult adapter_get_inf
 			DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING
 			DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict);
 
-	dbus_message_iter_append_dict_entry(&dict, "address",
-			DBUS_TYPE_STRING, &property);
-
-	memset(str, 0, sizeof(str));
-	property = str;
-	str2ba(adapter->address, &ba);
-
-	if (!read_local_name(&ba, str))
-		dbus_message_iter_append_dict_entry(&dict, "name",
-			DBUS_TYPE_STRING, &property);
+	if (check_address (property) == 0) {
+		dbus_message_iter_append_dict_entry(&dict, "address",
+						    DBUS_TYPE_STRING, &property);
+
+		memset(str, 0, sizeof(str));
+		property = str;
+		str2ba(adapter->address, &ba);
+
+		if (!read_local_name(&ba, str))
+			dbus_message_iter_append_dict_entry(&dict, "name",
+							    DBUS_TYPE_STRING, &property);
+	}
 
 	get_device_version(adapter->dev_id, str, sizeof(str));
 	dbus_message_iter_append_dict_entry(&dict, "version",
@@ -337,7 +339,7 @@ static DBusHandlerResult adapter_get_inf
 	dbus_message_iter_append_dict_entry(&dict, "discoverable_timeout",
 				DBUS_TYPE_UINT32, &adapter->discov_timeout);
 
-	if (!read_local_class(&ba, cls)) {
+	if (check_address (property) == 0 && !read_local_class(&ba, cls)) {
 		uint32_t class;
 
 		memcpy(&class, cls, 3);
@@ -368,6 +370,9 @@ static DBusHandlerResult adapter_get_add
 	if (!dbus_message_has_signature(msg, DBUS_TYPE_INVALID_AS_STRING))
 		return error_invalid_arguments(conn, msg, NULL);
 
+	if (check_address (paddr) < 0)
+		return error_not_ready(conn, msg);
+
 	reply = dbus_message_new_method_return(msg);
 	if (!reply)
 		return DBUS_HANDLER_RESULT_NEED_MEMORY;
Index: dbus-api.txt
===================================================================
RCS file: /cvsroot/bluez/utils/hcid/dbus-api.txt,v
retrieving revision 1.135
diff -u -p -r1.135 dbus-api.txt
--- dbus-api.txt	28 Jan 2008 10:38:40 -0000	1.135
+++ dbus-api.txt	1 Feb 2008 10:44:20 -0000
@@ -335,7 +335,7 @@ Methods		dict GetInfo()
 
 			Example: "00:11:22:33:44:55"
 
-			Possible errors: none
+			Possible errors: org.bluez.Error.NotReady
 
 		string GetVersion()
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.