Skip to contentSkip to conversation

move common exceptions to common/ directory

PATCH In review [email protected] 2 participants 7 messages Oct 28, 2007 Bluetooth drivers

lore
Share & tools
lore
#0 lore raw

PATCH 1/3 move common exceptions to common/ directory

Hi Marcel,

This is the first patch for what i have in mind for the dbus errors management:
- org.bluez.Error.xxx : generic errors used by hcid and all services, declared
in common-error.h
- org.bluez.Error.SERVICENAME.yyy : errors that have a meaning only to a local
service.
- org.bluez.core.Error.zzz : errors that have a meaning local to hcid, not
shared with other services.

This is the first patch, that declares the shared by all services.

Regards,

Fabien

common/common-error.c +140 -0
diff -x Entries -u -r -N utils/common/common-error.c utils2/common/common-error.c
@@ -0,0 +1,140 @@
+/*
+ *
+ *  BlueZ - Bluetooth protocol stack for Linux
+ *
+ *  Copyright (C) 2006-2007  Nokia Corporation
+ *  Copyright (C) 2004-2007  Marcel Holtmann <[email protected]>
+ *
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <string.h>
+#include <errno.h>
+
+#include "dbus-helper.h"
+#include "common-error.h"
+
+#define ERROR_INTERFACE "org.bluez.Error"
+
+DBusHandlerResult error_device_unreachable(DBusConnection *conn, DBusMessage *msg)
+{
+	return error_common_reply(conn, msg, ERROR_INTERFACE ".DeviceUnreachable",
+							"Device Unreachable");
+}
+
+DBusHandlerResult error_connection_attempt_failed(DBusConnection *conn, DBusMessage *msg, int err)
+{
+	return error_common_reply(conn, msg,
+				ERROR_INTERFACE ".ConnectionAttemptFailed",
+				err ? strerror(err) : "Connection attempt failed");
+}
+
+DBusHandlerResult error_already_connected(DBusConnection *conn, DBusMessage *msg)
+{
+	return error_common_reply(conn, msg,
+				ERROR_INTERFACE ".AlreadyConnected",
+				"Already connected to a device");
+}
+
+DBusHandlerResult error_in_progress(DBusConnection *conn, DBusMessage *msg, 
+						const char *str)
+{
+	return error_common_reply(conn, msg, ERROR_INTERFACE ".InProgress", str);
+}
+
+DBusHandlerResult error_invalid_arguments(DBusConnection *conn, DBusMessage *msg,
+						const char *descr)
+{
+	return error_common_reply(conn, msg,
+				ERROR_INTERFACE ".InvalidArguments",
+				descr ? descr : "Invalid arguments in method call");
+}
+
+DBusHandlerResult error_out_of_memory(DBusConnection *conn, DBusMessage *msg)
+{
+	return error_common_reply(conn, msg, ERROR_INTERFACE ".OutOfMemory",
+							"Out of memory");
+}
+
+DBusHandlerResult error_not_available(DBusConnection *conn, DBusMessage *msg)
+{
+	return error_common_reply(conn, msg, ERROR_INTERFACE ".NotAvailable",
+							"Not available");
+}
+
+DBusHandlerResult error_not_supported(DBusConnection *conn, DBusMessage *msg)
+{
+	return error_common_reply(conn, msg, ERROR_INTERFACE ".NotSupported",
+							"Not supported");
+}
+
+DBusHandlerResult error_not_connected(DBusConnection *conn, DBusMessage *msg)
+{
+	return error_common_reply(conn, msg, ERROR_INTERFACE ".NotConnected",
+							"Not connected");
+}
+
+DBusHandlerResult error_already_exists(DBusConnection *conn, DBusMessage *msg, const char *str)
+{
+	return error_common_reply(conn, msg, ERROR_INTERFACE ".AlreadyExists", str);
+}
+
+DBusHandlerResult error_does_not_exist(DBusConnection *conn, DBusMessage *msg, const char *str)
+{
+	return error_common_reply(conn, msg, ERROR_INTERFACE ".DoesNotExist", str);
+}
+
+DBusHandlerResult error_device_does_not_exist(DBusConnection *conn, DBusMessage *msg)
+{
+	return error_does_not_exist(conn, msg, "Device does not exist");
+}
+
+DBusHandlerResult error_canceled(DBusConnection *conn, DBusMessage *msg, const char *str)
+{
+	return error_common_reply(conn, msg, ERROR_INTERFACE ".Canceled", str);
+}
+
+DBusHandlerResult error_failed(DBusConnection *conn, DBusMessage *msg, const char * desc)
+{
+	return error_common_reply(conn, msg, ERROR_INTERFACE ".Failed", desc);
+}
+
+DBusHandlerResult error_failed_errno(DBusConnection *conn, DBusMessage *msg, int err)
+{
+	const char *desc = strerror(err);
+
+	return error_failed(conn, msg, desc);
+}
+
+DBusHandlerResult error_common_reply(DBusConnection *conn, DBusMessage *msg,
+					const char *name, const char *descr)
+{
+	DBusMessage *derr;
+
+	if (!conn || !msg)
+		return DBUS_HANDLER_RESULT_HANDLED;
+
+	derr = dbus_message_new_error(msg, name, descr);
+	if (!derr)
+		return DBUS_HANDLER_RESULT_NEED_MEMORY;
+
+	return dbus_connection_send_and_unref(conn, derr);
+}
common/common-error.h +146 -0

146 lines not on this page · raw message

common/Makefile.am +1 -0
diff -x Entries -u -r -N utils/common/Makefile.am utils2/common/Makefile.am
@@ -26,6 +26,7 @@
 libhelper_a_SOURCES = oui.h oui.c dbus.h dbus.c \
 	textfile.h textfile.c logging.h logging.c \
 	dbus-helper.h dbus-helper.c \
+	common-error.h common-error.c \
 	sdp-xml.h sdp-xml.c $(sdp_sources) \
 	hal.h $(hal_sources) notify.h $(notify_sources)
 

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/

_______________________________________________
Bluez-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bluez-devel

maintainer
#1 lore raw

Hi Fabien,

Quoted 7 lines

This is the first patch for what i have in mind for the dbus errors management:
- org.bluez.Error.xxx : generic errors used by hcid and all services, declared
in common-error.h
- org.bluez.Error.SERVICENAME.yyy : errors that have a meaning only to a local
service.
- org.bluez.core.Error.zzz : errors that have a meaning local to hcid, not
shared with other services.

I like to have org.bluez.Error only. There is no need to get an extra hierarchy level.

Regards

Marcel

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Bluez-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bluez-devel

#2 lore raw

Hi Marcel

Quoted 3 lines

I like to have org.bluez.Error only. There is no need to get an extra hierarchy level.

That's basically how things are today... however if have no objection if you want to change that...

Btw did you have a look at the send_message_and_unref ==> dbus_connection_send_and_unref patch ? Is it ok for you ? (Aven't tested but i think those three patches may depend on it)

Please find attached an updated patchset moving everything to org.bluez.Error... as usual, any more comments are welcomed :-)

Cheers,

Fabien

audio/device.c +1 -1
diff -x Entries -x Makefile.in -u -r -N utils/audio/device.c utils2/audio/device.c
@@ -45,7 +45,7 @@
 #include "logging.h"
 #include "textfile.h"
 
-#include "error.h"
+#include "common-error.h"
 #include "ipc.h"
 #include "device.h"
 #include "avdtp.h"
audio/error.c +2 -75

82 lines not on this page · raw message

audio/error.h +6 -11
diff -x Entries -x Makefile.in -u -r -N utils/audio/error.h utils2/audio/error.h
@@ -22,14 +22,9 @@
  *
  */
 
-DBusHandlerResult err_invalid_args(DBusConnection *conn,
-					DBusMessage *msg, const char *descr);
-DBusHandlerResult err_already_connected(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult err_not_connected(DBusConnection *conn, DBusMessage * msg);
-DBusHandlerResult err_not_supported(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult err_connect_failed(DBusConnection *conn,
-					DBusMessage *msg, const char *err);
-DBusHandlerResult err_does_not_exist(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult err_not_available(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult err_failed(DBusConnection *conn,
-					DBusMessage *msg, const char *dsc);
+/**
+  This file must only contain errors that are specific to the audio service.
+  As such they will be found in the org.bluez.audio.Error namespace.
+  If errors are not specific to the audio service, they must be declared
+  in common-error.h, so that other services can use it
+*/
audio/headset.c +27 -27

200 lines not on this page · raw message

audio/manager.c +28 -27

193 lines not on this page · raw message

audio/sink.c +10 -11
diff -x Entries -x Makefile.in -u -r -N utils/audio/sink.c utils2/audio/sink.c
@@ -40,7 +40,7 @@
 #include "avdtp.h"
 #include "device.h"
 #include "a2dp.h"
-#include "error.h"
+#include "common-error.h"
 #include "sink.h"
 
 #define STREAM_SETUP_RETRY_TIMER 2000
@@ -147,7 +147,7 @@
 		dbus_connection_send_and_unref(pending->conn, reply);
 	} else {
 		debug("Stream setup failed, after XCASE connect:connect");
-		err_failed(pending->conn, pending->msg, "Stream setup failed");
+		error_failed(pending->conn, pending->msg, "Stream setup failed");
 	}
 
 	sink->connect = NULL;
@@ -182,7 +182,7 @@
 					stream_setup_retry, sink);
 		} else {
 			sink->connect = NULL;
-			err_failed(pending->conn, pending->msg, "Stream setup failed");
+			error_failed(pending->conn, pending->msg, "Stream setup failed");
 			pending_request_free(pending);
 			debug("Stream setup failed : %s", avdtp_strerror(err));
 		}
@@ -201,14 +201,14 @@
 		sink->session = avdtp_get(&dev->src, &dev->dst);
 
 	if (!sink->session)
-		return err_connect_failed(conn, msg,
+		return error_failed(conn, msg,
 						"Unable to get a session");
 
 	if (sink->connect || sink->disconnect)
-		return err_connect_failed(conn, msg, "Connect in progress");
+		return error_in_progress(conn, msg, "Device connection already in progress");
 
 	if (sink->state >= AVDTP_STATE_OPEN)
-		return err_already_connected(conn, msg);
+		return error_already_connected(conn, msg);
 
 	pending = g_new0(struct pending_request, 1);
 	pending->conn = dbus_connection_ref(conn);
@@ -223,8 +223,7 @@
 		sink->connect = NULL;
 		avdtp_unref(sink->session);
 		sink->session = NULL;
-		return err_connect_failed(conn, msg,
-						"Failed to request a stream");
+		return error_failed(conn, msg, "Failed to request a stream");
 	}
 
 	debug("stream creation in progress");
@@ -243,10 +242,10 @@
 	int err;
 
 	if (!sink->session)
-		return err_not_connected(conn, msg);
+		return error_not_connected(conn, msg);
 
 	if (sink->connect || sink->disconnect)
-		return err_failed(conn, msg, strerror(EBUSY));
+		return error_failed(conn, msg, strerror(EBUSY));
 
 	if (sink->state < AVDTP_STATE_OPEN) {
 		DBusMessage *reply = dbus_message_new_method_return(msg);
@@ -259,7 +258,7 @@
 
 	err = avdtp_close(sink->session, sink->stream);
 	if (err < 0)
-		return err_failed(conn, msg, strerror(-err));
+		return error_failed(conn, msg, strerror(-err));
 
 	pending = g_new0(struct pending_request, 1);
 	pending->conn = dbus_connection_ref(conn);
common/common-error.c +138 -0

138 lines not on this page · raw message

common/common-error.h +148 -0

148 lines not on this page · raw message

common/Makefile.am +1 -0
diff -x Entries -x Makefile.in -u -r -N utils/common/Makefile.am utils2/common/Makefile.am
@@ -26,6 +26,7 @@
 libhelper_a_SOURCES = oui.h oui.c dbus.h dbus.c \
 	textfile.h textfile.c logging.h logging.c \
 	dbus-helper.h dbus-helper.c \
+	common-error.h common-error.c \
 	sdp-xml.h sdp-xml.c $(sdp_sources) \
 	hal.h $(hal_sources) notify.h $(notify_sources)
 
hcid/adapter.c +115 -114

801 lines not on this page · raw message

hcid/dbus-database.c +25 -24

193 lines not on this page · raw message

hcid/dbus-error.c +1 -109

170 lines not on this page · raw message

hcid/dbus-error.h +1 -18
diff -x Entries -x Makefile.in -u -r -N utils/hcid/dbus-error.h utils2/hcid/dbus-error.h
@@ -22,47 +22,30 @@
  *
  */
 
-#define ERROR_INTERFACE "org.bluez.Error"
-
-DBusHandlerResult error_failed(DBusConnection *conn, DBusMessage *msg, int err);
 DBusHandlerResult error_not_ready(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_invalid_arguments(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_unknown_method(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_not_authorized(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_rejected(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_out_of_memory(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_no_such_adapter(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_no_such_service(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_not_available(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_not_supported(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_request_deferred(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_not_connected(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_does_not_exist(DBusConnection *conn, DBusMessage *msg, const char *str);
-DBusHandlerResult error_canceled(DBusConnection *conn, DBusMessage *msg, const char *str);
+/* Used only for hcid device audit feature */
 DBusHandlerResult error_not_in_progress(DBusConnection *conn, DBusMessage *msg, const char *str);
 DBusHandlerResult error_unsupported_major_class(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_connection_attempt_failed(DBusConnection *conn, DBusMessage *msg, int err);
 DBusHandlerResult error_bonding_already_exists(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_bonding_does_not_exist(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_bonding_in_progress(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_bonding_not_in_progress(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_authentication_canceled(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_discover_in_progress(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_connect_in_progress(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_connect_not_in_progress(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_record_does_not_exist(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_passkey_agent_already_exists(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_passkey_agent_does_not_exist(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_auth_agent_already_exists(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_auth_agent_does_not_exist(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_binding_does_not_exist(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_service_already_exists(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_service_does_not_exist(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_service_search_in_progress(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_connect_canceled(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_sdp_failed(DBusConnection *conn, DBusMessage *msg, int err);
 DBusHandlerResult error_audit_already_exists(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_trusted_device_already_exists(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_trusted_device_does_not_exists(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_disconnect_in_progress(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_service_start_in_progress(DBusConnection *conn, DBusMessage *msg);
hcid/dbus-hci.c +1 -0
diff -x Entries -x Makefile.in -u -r -N utils/hcid/dbus-hci.c utils2/hcid/dbus-hci.c
@@ -50,6 +50,7 @@
 #include "textfile.h"
 #include "manager.h"
 #include "adapter.h"
+#include "common-error.h"
 #include "dbus-helper.h"
 #include "dbus-common.h"
 #include "dbus-error.h"
hcid/dbus-sdp.c +22 -21

166 lines not on this page · raw message

hcid/dbus-security.c +7 -6
diff -x Entries -x Makefile.in -u -r -N utils/hcid/dbus-security.c utils2/hcid/dbus-security.c
@@ -50,6 +50,7 @@
 #include "dbus-common.h"
 #include "dbus-service.h"
 #include "dbus-error.h"
+#include "common-error.h"
 #include "dbus-security.h"
 #include "dbus-hci.h"
 
@@ -259,7 +260,7 @@
 				DBUS_TYPE_STRING, &path,
 				DBUS_TYPE_STRING, &addr,
 				DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	memset(&ref, 0, sizeof(ref));
 
@@ -314,7 +315,7 @@
 				DBUS_TYPE_STRING, &path,
 				DBUS_TYPE_STRING, &addr,
 				DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	memset(&ref, 0, sizeof(ref));
 
@@ -354,7 +355,7 @@
 	if (!dbus_message_get_args(msg, NULL,
 				DBUS_TYPE_STRING, &path,
 				DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	default_agent = passkey_agent_new(NULL, conn, dbus_message_get_sender(msg),
 						path, NULL);
@@ -395,7 +396,7 @@
 	if (!dbus_message_get_args(msg, NULL,
 				DBUS_TYPE_STRING, &path,
 				DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	name = dbus_message_get_sender(msg);
 
@@ -570,7 +571,7 @@
 	if (!dbus_message_get_args(msg, NULL,
 				DBUS_TYPE_STRING, &path,
 				DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	default_auth_agent = auth_agent_new(conn,
 					dbus_message_get_sender(msg), path);
@@ -611,7 +612,7 @@
 	if (!dbus_message_get_args(msg, NULL,
 				DBUS_TYPE_STRING, &path,
 				DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	name = dbus_message_get_sender(msg);
 
hcid/dbus-service.c +11 -10
diff -x Entries -x Makefile.in -u -r -N utils/hcid/dbus-service.c utils2/hcid/dbus-service.c
@@ -49,6 +49,7 @@
 #include "server.h"
 #include "dbus-common.h"
 #include "dbus-error.h"
+#include "common-error.h"
 #include "manager.h"
 #include "adapter.h"
 #include "dbus-service.h"
@@ -326,7 +327,7 @@
 
 	if (service->action) {
 		if (conn)
-			error_failed(conn, service->action, ecode);
+			error_failed_errno(conn, service->action, ecode);
 		dbus_message_unref(service->action);
 		service->action = NULL;
 	}
@@ -467,10 +468,10 @@
 	struct service *service = data;
 
 	if (service->external || service->pid)
-		return error_failed(conn, msg, EALREADY);
+		return error_failed_errno(conn, msg, EALREADY);
 
 	if (service_start(service, conn) < 0)
-		return error_failed(conn, msg, ENOEXEC);
+		return error_failed_errno(conn, msg, ENOEXEC);
 
 	service->action = dbus_message_ref(msg);
 
@@ -483,7 +484,7 @@
 	struct service *service  = data;
 
 	if (service->external || !service->bus_name)
-		return error_failed(conn, msg, EPERM);
+		return error_failed_errno(conn, msg, EPERM);
 
 	stop_service(service, FALSE);
 
@@ -539,10 +540,10 @@
 	if (!dbus_message_get_args(msg, NULL,
 			DBUS_TYPE_STRING, &address,
 			DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	if (check_address(address) < 0)
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	reply = dbus_message_new_method_return(msg);
 	if (!reply)
@@ -600,10 +601,10 @@
 	if (!dbus_message_get_args(msg, NULL,
 			DBUS_TYPE_STRING, &address,
 			DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	if (check_address(address) < 0)
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	trusted = read_trust(BDADDR_ANY, address, service->ident);
 
@@ -628,10 +629,10 @@
 	if (!dbus_message_get_args(msg, NULL,
 			DBUS_TYPE_STRING, &address,
 			DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	if (check_address(address) < 0)
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	reply = dbus_message_new_method_return(msg);
 	if (!reply)
hcid/dbus-test.c +9 -8
diff -x Entries -x Makefile.in -u -r -N utils/hcid/dbus-test.c utils2/hcid/dbus-test.c
@@ -45,6 +45,7 @@
 #include "adapter.h"
 #include "dbus-hci.h"
 #include "dbus-error.h"
+#include "common-error.h"
 #include "dbus-test.h"
 
 #define L2INFO_TIMEOUT (2 * 1000)
@@ -424,11 +425,11 @@
 	if (dbus_error_is_set(&err)) {
 		error("Can't extract message arguments:%s", err.message);
 		dbus_error_free(&err);
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 	}
 
 	if (check_address(address) < 0)
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	str2ba(address, &peer);
 	str2ba(adapter->address, &local);
@@ -507,11 +508,11 @@
 	if (dbus_error_is_set(&err)) {
 		error("Can't extract message arguments:%s", err.message);
 		dbus_error_free(&err);
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 	}
 
 	if (check_address(address) < 0)
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	str2ba(address, &peer);
 	str2ba(adapter->address, &local);
@@ -567,11 +568,11 @@
 	if (dbus_error_is_set(&err)) {
 		error("Can't extract message arguments:%s", err.message);
 		dbus_error_free(&err);
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 	}
 
 	if (check_address(address) < 0)
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	str2ba(address, &peer);
 	str2ba(adapter->address, &local);
@@ -609,11 +610,11 @@
 	if (dbus_error_is_set(&err)) {
 		error("Can't extract message arguments:%s", err.message);
 		dbus_error_free(&err);
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 	}
 
 	if (check_address(address) < 0)
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	str2ba(address, &peer);
 	str2ba(adapter->address, &local);
hcid/manager.c +11 -10
diff -x Entries -x Makefile.in -u -r -N utils/hcid/manager.c utils2/hcid/manager.c
@@ -49,6 +49,7 @@
 #include "dbus.h"
 #include "dbus-helper.h"
 #include "dbus-common.h"
+#include "common-error.h"
 #include "dbus-error.h"
 #include "dbus-hci.h"
 #include "dbus-service.h"
@@ -67,7 +68,7 @@
 	dbus_uint32_t version = 0;
 
 	if (!dbus_message_has_signature(msg, DBUS_TYPE_INVALID_AS_STRING))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	reply = dbus_message_new_method_return(msg);
 	if (!reply)
@@ -86,7 +87,7 @@
 	char path[MAX_PATH_LENGTH], *path_ptr = path;
 
 	if (!dbus_message_has_signature(msg, DBUS_TYPE_INVALID_AS_STRING))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	if (default_adapter_id < 0)
 		return error_no_such_adapter(conn, msg);
@@ -159,7 +160,7 @@
 	if (!dbus_message_get_args(msg, NULL,
 				DBUS_TYPE_STRING, &pattern,
 				DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	/* hci_devid() would make sense to use here, except it
 	   is restricted to devices which are up */
@@ -200,11 +201,11 @@
 	int i, sk;
 
 	if (!dbus_message_has_signature(msg, DBUS_TYPE_INVALID_AS_STRING))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	sk = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI);
 	if (sk < 0)
-		return error_failed(conn, msg, errno);
+		return error_failed_errno(conn, msg, errno);
 
 	dl = g_malloc0(HCI_MAX_DEV * sizeof(*dr) + sizeof(*dl));
 
@@ -215,7 +216,7 @@
 		int err = errno;
 		close(sk);
 		g_free(dl);
-		return error_failed(conn, msg, err);
+		return error_failed_errno(conn, msg, err);
 	}
 
 	dr = dl->dev_req;
@@ -267,7 +268,7 @@
 	if (!dbus_message_get_args(msg, NULL,
 				DBUS_TYPE_STRING, &pattern,
 				DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	service = search_service(conn, pattern);
 	if (!service)
@@ -291,7 +292,7 @@
 	DBusMessageIter array_iter;
 
 	if (!dbus_message_has_signature(msg, DBUS_TYPE_INVALID_AS_STRING))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	reply = dbus_message_new_method_return(msg);
 	if (!reply)
@@ -317,7 +318,7 @@
 	if (!dbus_message_get_args(msg, NULL,
 				DBUS_TYPE_STRING, &pattern,
 				DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	service = search_service(conn, pattern);
 	if (!service)
@@ -341,7 +342,7 @@
 		return error_service_start_in_progress(conn, msg);
 
 	if (service_start(service, conn) < 0)
-		return error_failed(conn, msg, ENOEXEC);
+		return error_failed_errno(conn, msg, ENOEXEC);
 
 	service->action = dbus_message_ref(msg);
 
#3 lore raw
In reply to Marcel Holtmann

Hi Marcel

Quoted 3 lines

I like to have org.bluez.Error only. There is no need to get an extra hierarchy level.

That's basically how things are today... however if have no objection if you want to change that...

Btw did you have a look at the send_message_and_unref ==> dbus_connection_send_and_unref patch ? Is it ok for you ? (Aven't tested but i think those three patches may depend on it)

Please find attached an updated patchset moving everything to org.bluez.Error... as usual, any more comments are welcomed :-)

Cheers,

Fabien

common/common-error.c +138 -0
diff -x Entries -x Makefile.in -u -r -N utils/common/common-error.c utils2/common/common-error.c
@@ -0,0 +1,138 @@
+/*
+ *
+ *  BlueZ - Bluetooth protocol stack for Linux
+ *
+ *  Copyright (C) 2006-2007  Nokia Corporation
+ *  Copyright (C) 2004-2007  Marcel Holtmann <[email protected]>
+ *
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <string.h>
+#include <errno.h>
+
+#include "dbus-helper.h"
+#include "common-error.h"
+
+DBusHandlerResult error_device_unreachable(DBusConnection *conn, DBusMessage *msg)
+{
+	return error_common_reply(conn, msg, ERROR_INTERFACE ".DeviceUnreachable",
+							"Device Unreachable");
+}
+
+DBusHandlerResult error_connection_attempt_failed(DBusConnection *conn, DBusMessage *msg, int err)
+{
+	return error_common_reply(conn, msg,
+				ERROR_INTERFACE ".ConnectionAttemptFailed",
+				err ? strerror(err) : "Connection attempt failed");
+}
+
+DBusHandlerResult error_already_connected(DBusConnection *conn, DBusMessage *msg)
+{
+	return error_common_reply(conn, msg,
+				ERROR_INTERFACE ".AlreadyConnected",
+				"Already connected to a device");
+}
+
+DBusHandlerResult error_in_progress(DBusConnection *conn, DBusMessage *msg, 
+						const char *str)
+{
+	return error_common_reply(conn, msg, ERROR_INTERFACE ".InProgress", str);
+}
+
+DBusHandlerResult error_invalid_arguments(DBusConnection *conn, DBusMessage *msg,
+						const char *descr)
+{
+	return error_common_reply(conn, msg,
+				ERROR_INTERFACE ".InvalidArguments",
+				descr ? descr : "Invalid arguments in method call");
+}
+
+DBusHandlerResult error_out_of_memory(DBusConnection *conn, DBusMessage *msg)
+{
+	return error_common_reply(conn, msg, ERROR_INTERFACE ".OutOfMemory",
+							"Out of memory");
+}
+
+DBusHandlerResult error_not_available(DBusConnection *conn, DBusMessage *msg)
+{
+	return error_common_reply(conn, msg, ERROR_INTERFACE ".NotAvailable",
+							"Not available");
+}
+
+DBusHandlerResult error_not_supported(DBusConnection *conn, DBusMessage *msg)
+{
+	return error_common_reply(conn, msg, ERROR_INTERFACE ".NotSupported",
+							"Not supported");
+}
+
+DBusHandlerResult error_not_connected(DBusConnection *conn, DBusMessage *msg)
+{
+	return error_common_reply(conn, msg, ERROR_INTERFACE ".NotConnected",
+							"Not connected");
+}
+
+DBusHandlerResult error_already_exists(DBusConnection *conn, DBusMessage *msg, const char *str)
+{
+	return error_common_reply(conn, msg, ERROR_INTERFACE ".AlreadyExists", str);
+}
+
+DBusHandlerResult error_does_not_exist(DBusConnection *conn, DBusMessage *msg, const char *str)
+{
+	return error_common_reply(conn, msg, ERROR_INTERFACE ".DoesNotExist", str);
+}
+
+DBusHandlerResult error_device_does_not_exist(DBusConnection *conn, DBusMessage *msg)
+{
+	return error_does_not_exist(conn, msg, "Device does not exist");
+}
+
+DBusHandlerResult error_canceled(DBusConnection *conn, DBusMessage *msg, const char *str)
+{
+	return error_common_reply(conn, msg, ERROR_INTERFACE ".Canceled", str);
+}
+
+DBusHandlerResult error_failed(DBusConnection *conn, DBusMessage *msg, const char * desc)
+{
+	return error_common_reply(conn, msg, ERROR_INTERFACE ".Failed", desc);
+}
+
+DBusHandlerResult error_failed_errno(DBusConnection *conn, DBusMessage *msg, int err)
+{
+	const char *desc = strerror(err);
+
+	return error_failed(conn, msg, desc);
+}
+
+DBusHandlerResult error_common_reply(DBusConnection *conn, DBusMessage *msg,
+					const char *name, const char *descr)
+{
+	DBusMessage *derr;
+
+	if (!conn || !msg)
+		return DBUS_HANDLER_RESULT_HANDLED;
+
+	derr = dbus_message_new_error(msg, name, descr);
+	if (!derr)
+		return DBUS_HANDLER_RESULT_NEED_MEMORY;
+
+	return dbus_connection_send_and_unref(conn, derr);
+}
common/common-error.h +148 -0

148 lines not on this page · raw message

common/Makefile.am +1 -0
diff -x Entries -x Makefile.in -u -r -N utils/common/Makefile.am utils2/common/Makefile.am
@@ -26,6 +26,7 @@
 libhelper_a_SOURCES = oui.h oui.c dbus.h dbus.c \
 	textfile.h textfile.c logging.h logging.c \
 	dbus-helper.h dbus-helper.c \
+	common-error.h common-error.c \
 	sdp-xml.h sdp-xml.c $(sdp_sources) \
 	hal.h $(hal_sources) notify.h $(notify_sources)
 
hcid/adapter.c +115 -114

801 lines not on this page · raw message

hcid/dbus-database.c +25 -24

193 lines not on this page · raw message

hcid/dbus-error.c +1 -109

170 lines not on this page · raw message

hcid/dbus-error.h +1 -18
diff -x Entries -x Makefile.in -u -r -N utils/hcid/dbus-error.h utils2/hcid/dbus-error.h
@@ -22,47 +22,30 @@
  *
  */
 
-#define ERROR_INTERFACE "org.bluez.Error"
-
-DBusHandlerResult error_failed(DBusConnection *conn, DBusMessage *msg, int err);
 DBusHandlerResult error_not_ready(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_invalid_arguments(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_unknown_method(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_not_authorized(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_rejected(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_out_of_memory(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_no_such_adapter(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_no_such_service(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_not_available(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_not_supported(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_request_deferred(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_not_connected(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_does_not_exist(DBusConnection *conn, DBusMessage *msg, const char *str);
-DBusHandlerResult error_canceled(DBusConnection *conn, DBusMessage *msg, const char *str);
+/* Used only for hcid device audit feature */
 DBusHandlerResult error_not_in_progress(DBusConnection *conn, DBusMessage *msg, const char *str);
 DBusHandlerResult error_unsupported_major_class(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_connection_attempt_failed(DBusConnection *conn, DBusMessage *msg, int err);
 DBusHandlerResult error_bonding_already_exists(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_bonding_does_not_exist(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_bonding_in_progress(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_bonding_not_in_progress(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_authentication_canceled(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_discover_in_progress(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_connect_in_progress(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_connect_not_in_progress(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_record_does_not_exist(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_passkey_agent_already_exists(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_passkey_agent_does_not_exist(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_auth_agent_already_exists(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_auth_agent_does_not_exist(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_binding_does_not_exist(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_service_already_exists(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_service_does_not_exist(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_service_search_in_progress(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_connect_canceled(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_sdp_failed(DBusConnection *conn, DBusMessage *msg, int err);
 DBusHandlerResult error_audit_already_exists(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_trusted_device_already_exists(DBusConnection *conn, DBusMessage *msg);
-DBusHandlerResult error_trusted_device_does_not_exists(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_disconnect_in_progress(DBusConnection *conn, DBusMessage *msg);
 DBusHandlerResult error_service_start_in_progress(DBusConnection *conn, DBusMessage *msg);
hcid/dbus-hci.c +1 -0
diff -x Entries -x Makefile.in -u -r -N utils/hcid/dbus-hci.c utils2/hcid/dbus-hci.c
@@ -50,6 +50,7 @@
 #include "textfile.h"
 #include "manager.h"
 #include "adapter.h"
+#include "common-error.h"
 #include "dbus-helper.h"
 #include "dbus-common.h"
 #include "dbus-error.h"
hcid/dbus-sdp.c +22 -21

166 lines not on this page · raw message

hcid/dbus-security.c +7 -6
diff -x Entries -x Makefile.in -u -r -N utils/hcid/dbus-security.c utils2/hcid/dbus-security.c
@@ -50,6 +50,7 @@
 #include "dbus-common.h"
 #include "dbus-service.h"
 #include "dbus-error.h"
+#include "common-error.h"
 #include "dbus-security.h"
 #include "dbus-hci.h"
 
@@ -259,7 +260,7 @@
 				DBUS_TYPE_STRING, &path,
 				DBUS_TYPE_STRING, &addr,
 				DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	memset(&ref, 0, sizeof(ref));
 
@@ -314,7 +315,7 @@
 				DBUS_TYPE_STRING, &path,
 				DBUS_TYPE_STRING, &addr,
 				DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	memset(&ref, 0, sizeof(ref));
 
@@ -354,7 +355,7 @@
 	if (!dbus_message_get_args(msg, NULL,
 				DBUS_TYPE_STRING, &path,
 				DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	default_agent = passkey_agent_new(NULL, conn, dbus_message_get_sender(msg),
 						path, NULL);
@@ -395,7 +396,7 @@
 	if (!dbus_message_get_args(msg, NULL,
 				DBUS_TYPE_STRING, &path,
 				DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	name = dbus_message_get_sender(msg);
 
@@ -570,7 +571,7 @@
 	if (!dbus_message_get_args(msg, NULL,
 				DBUS_TYPE_STRING, &path,
 				DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	default_auth_agent = auth_agent_new(conn,
 					dbus_message_get_sender(msg), path);
@@ -611,7 +612,7 @@
 	if (!dbus_message_get_args(msg, NULL,
 				DBUS_TYPE_STRING, &path,
 				DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	name = dbus_message_get_sender(msg);
 
hcid/dbus-service.c +11 -10
diff -x Entries -x Makefile.in -u -r -N utils/hcid/dbus-service.c utils2/hcid/dbus-service.c
@@ -49,6 +49,7 @@
 #include "server.h"
 #include "dbus-common.h"
 #include "dbus-error.h"
+#include "common-error.h"
 #include "manager.h"
 #include "adapter.h"
 #include "dbus-service.h"
@@ -326,7 +327,7 @@
 
 	if (service->action) {
 		if (conn)
-			error_failed(conn, service->action, ecode);
+			error_failed_errno(conn, service->action, ecode);
 		dbus_message_unref(service->action);
 		service->action = NULL;
 	}
@@ -467,10 +468,10 @@
 	struct service *service = data;
 
 	if (service->external || service->pid)
-		return error_failed(conn, msg, EALREADY);
+		return error_failed_errno(conn, msg, EALREADY);
 
 	if (service_start(service, conn) < 0)
-		return error_failed(conn, msg, ENOEXEC);
+		return error_failed_errno(conn, msg, ENOEXEC);
 
 	service->action = dbus_message_ref(msg);
 
@@ -483,7 +484,7 @@
 	struct service *service  = data;
 
 	if (service->external || !service->bus_name)
-		return error_failed(conn, msg, EPERM);
+		return error_failed_errno(conn, msg, EPERM);
 
 	stop_service(service, FALSE);
 
@@ -539,10 +540,10 @@
 	if (!dbus_message_get_args(msg, NULL,
 			DBUS_TYPE_STRING, &address,
 			DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	if (check_address(address) < 0)
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	reply = dbus_message_new_method_return(msg);
 	if (!reply)
@@ -600,10 +601,10 @@
 	if (!dbus_message_get_args(msg, NULL,
 			DBUS_TYPE_STRING, &address,
 			DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	if (check_address(address) < 0)
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	trusted = read_trust(BDADDR_ANY, address, service->ident);
 
@@ -628,10 +629,10 @@
 	if (!dbus_message_get_args(msg, NULL,
 			DBUS_TYPE_STRING, &address,
 			DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	if (check_address(address) < 0)
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	reply = dbus_message_new_method_return(msg);
 	if (!reply)
hcid/dbus-test.c +9 -8
diff -x Entries -x Makefile.in -u -r -N utils/hcid/dbus-test.c utils2/hcid/dbus-test.c
@@ -45,6 +45,7 @@
 #include "adapter.h"
 #include "dbus-hci.h"
 #include "dbus-error.h"
+#include "common-error.h"
 #include "dbus-test.h"
 
 #define L2INFO_TIMEOUT (2 * 1000)
@@ -424,11 +425,11 @@
 	if (dbus_error_is_set(&err)) {
 		error("Can't extract message arguments:%s", err.message);
 		dbus_error_free(&err);
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 	}
 
 	if (check_address(address) < 0)
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	str2ba(address, &peer);
 	str2ba(adapter->address, &local);
@@ -507,11 +508,11 @@
 	if (dbus_error_is_set(&err)) {
 		error("Can't extract message arguments:%s", err.message);
 		dbus_error_free(&err);
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 	}
 
 	if (check_address(address) < 0)
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	str2ba(address, &peer);
 	str2ba(adapter->address, &local);
@@ -567,11 +568,11 @@
 	if (dbus_error_is_set(&err)) {
 		error("Can't extract message arguments:%s", err.message);
 		dbus_error_free(&err);
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 	}
 
 	if (check_address(address) < 0)
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	str2ba(address, &peer);
 	str2ba(adapter->address, &local);
@@ -609,11 +610,11 @@
 	if (dbus_error_is_set(&err)) {
 		error("Can't extract message arguments:%s", err.message);
 		dbus_error_free(&err);
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 	}
 
 	if (check_address(address) < 0)
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	str2ba(address, &peer);
 	str2ba(adapter->address, &local);
hcid/manager.c +11 -10
diff -x Entries -x Makefile.in -u -r -N utils/hcid/manager.c utils2/hcid/manager.c
@@ -49,6 +49,7 @@
 #include "dbus.h"
 #include "dbus-helper.h"
 #include "dbus-common.h"
+#include "common-error.h"
 #include "dbus-error.h"
 #include "dbus-hci.h"
 #include "dbus-service.h"
@@ -67,7 +68,7 @@
 	dbus_uint32_t version = 0;
 
 	if (!dbus_message_has_signature(msg, DBUS_TYPE_INVALID_AS_STRING))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	reply = dbus_message_new_method_return(msg);
 	if (!reply)
@@ -86,7 +87,7 @@
 	char path[MAX_PATH_LENGTH], *path_ptr = path;
 
 	if (!dbus_message_has_signature(msg, DBUS_TYPE_INVALID_AS_STRING))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	if (default_adapter_id < 0)
 		return error_no_such_adapter(conn, msg);
@@ -159,7 +160,7 @@
 	if (!dbus_message_get_args(msg, NULL,
 				DBUS_TYPE_STRING, &pattern,
 				DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	/* hci_devid() would make sense to use here, except it
 	   is restricted to devices which are up */
@@ -200,11 +201,11 @@
 	int i, sk;
 
 	if (!dbus_message_has_signature(msg, DBUS_TYPE_INVALID_AS_STRING))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	sk = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI);
 	if (sk < 0)
-		return error_failed(conn, msg, errno);
+		return error_failed_errno(conn, msg, errno);
 
 	dl = g_malloc0(HCI_MAX_DEV * sizeof(*dr) + sizeof(*dl));
 
@@ -215,7 +216,7 @@
 		int err = errno;
 		close(sk);
 		g_free(dl);
-		return error_failed(conn, msg, err);
+		return error_failed_errno(conn, msg, err);
 	}
 
 	dr = dl->dev_req;
@@ -267,7 +268,7 @@
 	if (!dbus_message_get_args(msg, NULL,
 				DBUS_TYPE_STRING, &pattern,
 				DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	service = search_service(conn, pattern);
 	if (!service)
@@ -291,7 +292,7 @@
 	DBusMessageIter array_iter;
 
 	if (!dbus_message_has_signature(msg, DBUS_TYPE_INVALID_AS_STRING))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	reply = dbus_message_new_method_return(msg);
 	if (!reply)
@@ -317,7 +318,7 @@
 	if (!dbus_message_get_args(msg, NULL,
 				DBUS_TYPE_STRING, &pattern,
 				DBUS_TYPE_INVALID))
-		return error_invalid_arguments(conn, msg);
+		return error_invalid_arguments(conn, msg, NULL);
 
 	service = search_service(conn, pattern);
 	if (!service)
@@ -341,7 +342,7 @@
 		return error_service_start_in_progress(conn, msg);
 
 	if (service_start(service, conn) < 0)
-		return error_failed(conn, msg, ENOEXEC);
+		return error_failed_errno(conn, msg, ENOEXEC);
 
 	service->action = dbus_message_ref(msg);
 
maintainer
#4 lore raw

Hi Fabien,

Quoted 6 lines
Quoted 3 lines

I like to have org.bluez.Error only. There is no need to get an extra hierarchy level.

That's basically how things are today... however if have no objection if you want to change that...

it is this way, because it was the easiest way. I want one org.bluez.Error to handle all error cases.

Quoted 3 lines

Btw did you have a look at the send_message_and_unref ==> dbus_connection_send_and_unref patch ? Is it ok for you ? (Aven't tested but i think those three patches may depend on it)

Not really. I leave this to Johan, since he worked on most of common/ stuff.

Regards

Marcel

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Bluez-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bluez-devel

#5 lore raw

Hi Marcel,

Quoted 7 lines
Quoted 2 lines

Btw did you have a look at the send_message_and_unref ==> dbus_connection_send_and_unref patch ? Is it ok for you ? (Aven't tested

but i

Quoted 1 line

think those three patches may depend on it)

Not really. I leave this to Johan, since he worked on most of common/ stuff.

Ok, wrong door :-)
I'll put this one on the list of the patches that johan has to review then ;-)

Should i go through Johan for the exceptions cleanup patches too ?

Regards,

Fabien

maintainer
#6 lore raw

Hi Fabien,

Quoted 5 lines
Quoted 5 lines
Quoted 2 lines

Btw did you have a look at the send_message_and_unref ==> dbus_connection_send_and_unref patch ? Is it ok for you ? (Aven't tested

but i

Quoted 1 line

think those three patches may depend on it)

Quoted 7 lines
Quoted 2 lines

Not really. I leave this to Johan, since he worked on most of common/ stuff.

Ok, wrong door :-)
I'll put this one on the list of the patches that johan has to review then ;-)

Should i go through Johan for the exceptions cleanup patches too ?

sure. Make him review and commit you patches.

Regards

Marcel

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Bluez-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bluez-devel