* [PATCH 00/10] More btd_error_* patches @ 2010-12-13 21:32 Gustavo F. Padovan 2010-12-13 21:32 ` [PATCH 01/10] Add btd_error_no_such_adapter() Gustavo F. Padovan 2010-12-14 8:56 ` [PATCH 00/10] More btd_error_* patches Johan Hedberg 0 siblings, 2 replies; 12+ messages in thread From: Gustavo F. Padovan @ 2010-12-13 21:32 UTC (permalink / raw) To: linux-bluetooth Hi, This patch set adds a new error function btd_error_failed(), which has a str parameter to enable a more accurate error report in the case the usual btd_error_* does not fit. After this patch set there will 10 occurrences of g_dbus_create_error() inside bluez code (not counting health/ here) Please review! Gustavo F. Padovan (10): Add btd_error_no_such_adapter() src: use btd_error_invalid_args() Add btd_error_failed() plugins: use btd_error_failed() attrib: use btd_error_failed() network: use btd_error_failed() input: use btd_error_failed() audio: use btd_error_failed() serial: use btd_error_failed() src: use btd_error_failed() attrib/client.c | 10 +------- audio/control.c | 6 +--- audio/device.c | 14 ++++-------- audio/gateway.c | 11 ++++----- audio/headset.c | 18 ++++------------ audio/sink.c | 9 ++----- audio/source.c | 9 ++----- audio/transport.c | 7 +----- input/device.c | 31 +++++++---------------------- network/connection.c | 30 +-------------------------- network/server.c | 13 ++--------- plugins/service.c | 22 +++----------------- serial/port.c | 20 ++++++++---------- serial/proxy.c | 8 +----- src/adapter.c | 37 ++++++++++++----------------------- src/device.c | 52 ++++++++++++------------------------------------- src/error.c | 12 +++++++++++ src/error.h | 2 + src/manager.c | 13 ++--------- 19 files changed, 97 insertions(+), 227 deletions(-) -- 1.7.3.2 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 01/10] Add btd_error_no_such_adapter() 2010-12-13 21:32 [PATCH 00/10] More btd_error_* patches Gustavo F. Padovan @ 2010-12-13 21:32 ` Gustavo F. Padovan 2010-12-13 21:32 ` [PATCH 02/10] src: use btd_error_invalid_args() Gustavo F. Padovan 2010-12-14 8:56 ` [PATCH 00/10] More btd_error_* patches Johan Hedberg 1 sibling, 1 reply; 12+ messages in thread From: Gustavo F. Padovan @ 2010-12-13 21:32 UTC (permalink / raw) To: linux-bluetooth --- src/device.c | 6 ------ src/error.c | 6 ++++++ src/error.h | 1 + src/manager.c | 13 +++---------- 4 files changed, 10 insertions(+), 16 deletions(-) diff --git a/src/device.c b/src/device.c index 91b9d23..7ceac8b 100644 --- a/src/device.c +++ b/src/device.c @@ -171,12 +171,6 @@ static DBusHandlerResult error_failed_errno(DBusConnection *conn, return error_failed(conn, msg, desc); } -static inline DBusMessage *no_such_adapter(DBusMessage *msg) -{ - return g_dbus_create_error(msg, ERROR_INTERFACE ".NoSuchAdapter", - "No such adapter"); -} - static void browse_request_free(struct browse_req *req) { if (req->listener_id) diff --git a/src/error.c b/src/error.c index e1f0598..013de96 100644 --- a/src/error.c +++ b/src/error.c @@ -108,3 +108,9 @@ DBusMessage *btd_error_not_authorized(DBusMessage *msg) return g_dbus_create_error(msg, ERROR_INTERFACE ".NotAuthorized", "Operation Not Authorized"); } + +DBusMessage *btd_error_no_such_adapter(DBusMessage *msg) +{ + return g_dbus_create_error(msg, ERROR_INTERFACE ".NoSuchAdapter", + "No such adapter"); +} diff --git a/src/error.h b/src/error.h index 9d80fa0..a4e32fe 100644 --- a/src/error.h +++ b/src/error.h @@ -40,3 +40,4 @@ DBusMessage *btd_error_not_available(DBusMessage *msg); DBusMessage *btd_error_in_progress(DBusMessage *msg); DBusMessage *btd_error_does_not_exist(DBusMessage *msg); DBusMessage *btd_error_not_authorized(DBusMessage *msg); +DBusMessage *btd_error_no_such_adapter(DBusMessage *msg); diff --git a/src/manager.c b/src/manager.c index ccaa1a2..c8ec7e5 100644 --- a/src/manager.c +++ b/src/manager.c @@ -59,13 +59,6 @@ const char *manager_get_base_path(void) return base_path; } -static inline DBusMessage *no_such_adapter(DBusMessage *msg) -{ - return g_dbus_create_error(msg, - ERROR_INTERFACE ".NoSuchAdapter", - "No such adapter"); -} - static DBusMessage *default_adapter(DBusConnection *conn, DBusMessage *msg, void *data) { @@ -75,7 +68,7 @@ static DBusMessage *default_adapter(DBusConnection *conn, adapter = manager_find_adapter_by_id(default_adapter_id); if (!adapter) - return no_such_adapter(msg); + return btd_error_no_such_adapter(msg); reply = dbus_message_new_method_return(msg); if (!reply) @@ -108,7 +101,7 @@ static DBusMessage *find_adapter(DBusConnection *conn, path = adapter_any_get_path(); if (path != NULL) goto done; - return no_such_adapter(msg); + return btd_error_no_such_adapter(msg); } else if (!strncmp(pattern, "hci", 3) && strlen(pattern) >= 4) { dev_id = atoi(pattern + 3); adapter = manager_find_adapter_by_id(dev_id); @@ -116,7 +109,7 @@ static DBusMessage *find_adapter(DBusConnection *conn, adapter = manager_find_adapter_by_address(pattern); if (!adapter) - return no_such_adapter(msg); + return btd_error_no_such_adapter(msg); path = adapter_get_path(adapter); -- 1.7.3.2 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 02/10] src: use btd_error_invalid_args() 2010-12-13 21:32 ` [PATCH 01/10] Add btd_error_no_such_adapter() Gustavo F. Padovan @ 2010-12-13 21:32 ` Gustavo F. Padovan 2010-12-13 21:33 ` [PATCH 03/10] Add btd_error_failed() Gustavo F. Padovan 0 siblings, 1 reply; 12+ messages in thread From: Gustavo F. Padovan @ 2010-12-13 21:32 UTC (permalink / raw) To: linux-bluetooth --- src/device.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/device.c b/src/device.c index 7ceac8b..0f4dc0b 100644 --- a/src/device.c +++ b/src/device.c @@ -605,7 +605,7 @@ static DBusMessage *discover_services(DBusConnection *conn, if (dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &pattern, DBUS_TYPE_INVALID) == FALSE) - goto fail; + return btd_error_invalid_args(msg); if (strlen(pattern) == 0) { err = device_browse(device, conn, msg, NULL, FALSE); -- 1.7.3.2 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 03/10] Add btd_error_failed() 2010-12-13 21:32 ` [PATCH 02/10] src: use btd_error_invalid_args() Gustavo F. Padovan @ 2010-12-13 21:33 ` Gustavo F. Padovan 2010-12-13 21:33 ` [PATCH 04/10] plugins: use btd_error_failed() Gustavo F. Padovan 0 siblings, 1 reply; 12+ messages in thread From: Gustavo F. Padovan @ 2010-12-13 21:33 UTC (permalink / raw) To: linux-bluetooth This is a special error type. It has a more general meaning and allows you to add a string to the error. --- src/error.c | 6 ++++++ src/error.h | 1 + 2 files changed, 7 insertions(+), 0 deletions(-) diff --git a/src/error.c b/src/error.c index 013de96..3a78628 100644 --- a/src/error.c +++ b/src/error.c @@ -114,3 +114,9 @@ DBusMessage *btd_error_no_such_adapter(DBusMessage *msg) return g_dbus_create_error(msg, ERROR_INTERFACE ".NoSuchAdapter", "No such adapter"); } + +DBusMessage *btd_error_failed(DBusMessage *msg, const char *str) +{ + return g_dbus_create_error(msg, ERROR_INTERFACE + ".Failed", "%s", str); +} diff --git a/src/error.h b/src/error.h index a4e32fe..faaef0a 100644 --- a/src/error.h +++ b/src/error.h @@ -41,3 +41,4 @@ DBusMessage *btd_error_in_progress(DBusMessage *msg); DBusMessage *btd_error_does_not_exist(DBusMessage *msg); DBusMessage *btd_error_not_authorized(DBusMessage *msg); DBusMessage *btd_error_no_such_adapter(DBusMessage *msg); +DBusMessage *btd_error_failed(DBusMessage *msg, const char *str); -- 1.7.3.2 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 04/10] plugins: use btd_error_failed() 2010-12-13 21:33 ` [PATCH 03/10] Add btd_error_failed() Gustavo F. Padovan @ 2010-12-13 21:33 ` Gustavo F. Padovan 2010-12-13 21:33 ` [PATCH 05/10] attrib: " Gustavo F. Padovan 0 siblings, 1 reply; 12+ messages in thread From: Gustavo F. Padovan @ 2010-12-13 21:33 UTC (permalink / raw) To: linux-bluetooth --- plugins/service.c | 22 ++++------------------ 1 files changed, 4 insertions(+), 18 deletions(-) diff --git a/plugins/service.c b/plugins/service.c index a442d53..f44aa92 100644 --- a/plugins/service.c +++ b/plugins/service.c @@ -337,17 +337,6 @@ static void exit_callback(DBusConnection *conn, void *user_data) g_free(user_record); } -static inline DBusMessage *failed(DBusMessage *msg) -{ - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", "Failed"); -} - -static inline DBusMessage *failed_strerror(DBusMessage *msg, int err) -{ - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "%s", strerror(err)); -} - static int add_xml_record(DBusConnection *conn, const char *sender, struct service_adapter *serv_adapter, const char *record, dbus_uint32_t *handle) @@ -412,9 +401,7 @@ static DBusMessage *update_record(DBusConnection *conn, DBusMessage *msg, if (err < 0) { sdp_record_free(sdp_record); error("Failed to update the service record"); - return g_dbus_create_error(msg, - ERROR_INTERFACE ".Failed", - "%s", strerror(EIO)); + return btd_error_failed(msg, strerror(-err)); } return dbus_message_new_method_return(msg); @@ -449,9 +436,8 @@ static DBusMessage *update_xml_record(DBusConnection *conn, if (!sdp_record) { error("Parsing of XML service record failed"); sdp_record_free(sdp_record); - return g_dbus_create_error(msg, - ERROR_INTERFACE ".Failed", - "%s", strerror(EIO)); + return btd_error_failed(msg, + "Parsing of XML service record failed"); } return update_record(conn, msg, serv_adapter, handle, sdp_record); @@ -494,7 +480,7 @@ static DBusMessage *add_service_record(DBusConnection *conn, sender = dbus_message_get_sender(msg); err = add_xml_record(conn, sender, serv_adapter, record, &handle); if (err < 0) - return failed_strerror(msg, err); + return btd_error_failed(msg, strerror(-err)); reply = dbus_message_new_method_return(msg); if (!reply) -- 1.7.3.2 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 05/10] attrib: use btd_error_failed() 2010-12-13 21:33 ` [PATCH 04/10] plugins: use btd_error_failed() Gustavo F. Padovan @ 2010-12-13 21:33 ` Gustavo F. Padovan 2010-12-13 21:33 ` [PATCH 06/10] network: " Gustavo F. Padovan 0 siblings, 1 reply; 12+ messages in thread From: Gustavo F. Padovan @ 2010-12-13 21:33 UTC (permalink / raw) To: linux-bluetooth --- attrib/client.c | 10 ++-------- 1 files changed, 2 insertions(+), 8 deletions(-) diff --git a/attrib/client.c b/attrib/client.c index 0805492..8e96af4 100644 --- a/attrib/client.c +++ b/attrib/client.c @@ -457,11 +457,8 @@ static DBusMessage *register_watcher(DBusConnection *conn, return btd_error_invalid_args(msg); if (l2cap_connect(prim->gatt, &gerr, TRUE) < 0) { - DBusMessage *reply; - reply = g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "%s", gerr->message); + DBusMessage *reply = btd_error_failed(msg, gerr->message); g_error_free(gerr); - return reply; } @@ -533,11 +530,8 @@ static DBusMessage *set_value(DBusConnection *conn, DBusMessage *msg, dbus_message_iter_get_fixed_array(&sub, &value, &len); if (l2cap_connect(gatt, &gerr, FALSE) < 0) { - DBusMessage *reply; - reply = g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "%s", gerr->message); + DBusMessage *reply = btd_error_failed(msg, gerr->message); g_error_free(gerr); - return reply; } -- 1.7.3.2 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 06/10] network: use btd_error_failed() 2010-12-13 21:33 ` [PATCH 05/10] attrib: " Gustavo F. Padovan @ 2010-12-13 21:33 ` Gustavo F. Padovan 2010-12-13 21:33 ` [PATCH 07/10] input: " Gustavo F. Padovan 0 siblings, 1 reply; 12+ messages in thread From: Gustavo F. Padovan @ 2010-12-13 21:33 UTC (permalink / raw) To: linux-bluetooth --- network/connection.c | 30 ++---------------------------- network/server.c | 13 +++---------- 2 files changed, 5 insertions(+), 38 deletions(-) diff --git a/network/connection.c b/network/connection.c index 89c38d8..09a4f3c 100644 --- a/network/connection.c +++ b/network/connection.c @@ -111,32 +111,6 @@ static struct network_conn *find_connection(GSList *list, uint16_t id) return NULL; } -static inline DBusMessage *not_supported(DBusMessage *msg) -{ - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "Not supported"); -} - -static inline DBusMessage *already_connected(DBusMessage *msg) -{ - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "Device already connected"); -} - -static inline DBusMessage *not_permited(DBusMessage *msg) -{ - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "Operation not permited"); -} - -static inline DBusMessage *connection_attempt_failed(DBusMessage *msg, - const char *err) -{ - return g_dbus_create_error(msg, - ERROR_INTERFACE ".ConnectionAttemptFailed", - "%s", err ? err : "Connection attempt failed"); -} - static gboolean bnep_watchdog_cb(GIOChannel *chan, GIOCondition cond, gpointer data) { @@ -182,7 +156,7 @@ static void cancel_connection(struct network_conn *nc, const char *err_msg) } if (nc->msg && err_msg) { - reply = connection_attempt_failed(nc->msg, err_msg); + reply = btd_error_failed(nc->msg, err_msg); g_dbus_send_message(connection, reply); } @@ -409,7 +383,7 @@ static DBusMessage *connection_connect(DBusConnection *conn, if (!nc->io) { DBusMessage *reply; error("%s", err->message); - reply = connection_attempt_failed(msg, err->message); + reply = btd_error_failed(msg, err->message); g_error_free(err); return reply; } diff --git a/network/server.c b/network/server.c index 60e1a81..7c63c3e 100644 --- a/network/server.c +++ b/network/server.c @@ -566,13 +566,6 @@ static uint32_t register_server_record(struct network_server *ns) return record->handle; } - -static inline DBusMessage *failed(DBusMessage *msg, const char *description) -{ - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "%s", description); -} - static void server_disconnect(DBusConnection *conn, void *user_data) { struct network_server *ns = user_data; @@ -600,7 +593,7 @@ static DBusMessage *register_server(DBusConnection *conn, return NULL; if (g_strcmp0(uuid, "nap")) - return failed(msg, "Invalid UUID"); + return btd_error_failed(msg, "Invalid UUID"); if (ns->record_id) return btd_error_already_exists(msg); @@ -611,7 +604,7 @@ static DBusMessage *register_server(DBusConnection *conn, ns->record_id = register_server_record(ns); if (!ns->record_id) - return failed(msg, "SDP record registration failed"); + return btd_error_failed(msg, "SDP record registration failed"); g_free(ns->bridge); ns->bridge = g_strdup(bridge); @@ -635,7 +628,7 @@ static DBusMessage *unregister_server(DBusConnection *conn, return NULL; if (g_strcmp0(uuid, "nap")) - return failed(msg, "Invalid UUID"); + return btd_error_failed(msg, "Invalid UUID"); reply = dbus_message_new_method_return(msg); if (!reply) -- 1.7.3.2 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 07/10] input: use btd_error_failed() 2010-12-13 21:33 ` [PATCH 06/10] network: " Gustavo F. Padovan @ 2010-12-13 21:33 ` Gustavo F. Padovan 2010-12-13 21:33 ` [PATCH 08/10] audio: " Gustavo F. Padovan 0 siblings, 1 reply; 12+ messages in thread From: Gustavo F. Padovan @ 2010-12-13 21:33 UTC (permalink / raw) To: linux-bluetooth --- input/device.c | 31 ++++++++----------------------- 1 files changed, 8 insertions(+), 23 deletions(-) diff --git a/input/device.c b/input/device.c index dee943b..0543fe6 100644 --- a/input/device.c +++ b/input/device.c @@ -315,14 +315,6 @@ failed: return FALSE; } -static inline DBusMessage *connection_attempt_failed(DBusMessage *msg, - const char *err) -{ - return g_dbus_create_error(msg, - ERROR_INTERFACE ".ConnectionAttemptFailed", - "%s", err ? err : "Connection attempt failed"); -} - static void rfcomm_connect_cb(GIOChannel *chan, GError *err, gpointer user_data) { struct input_conn *iconn = user_data; @@ -331,8 +323,7 @@ static void rfcomm_connect_cb(GIOChannel *chan, GError *err, gpointer user_data) DBusMessage *reply; if (err) { - reply = connection_attempt_failed(iconn->pending_connect, - err->message); + reply = btd_error_failed(iconn->pending_connect, err->message); goto failed; } @@ -345,7 +336,7 @@ static void rfcomm_connect_cb(GIOChannel *chan, GError *err, gpointer user_data) fake->uinput = uinput_create(idev->name); if (fake->uinput < 0) { g_io_channel_shutdown(chan, TRUE, NULL); - reply = connection_attempt_failed(iconn->pending_connect, + reply = btd_error_failed(iconn->pending_connect, strerror(errno)); goto failed; } @@ -834,7 +825,7 @@ static void interrupt_connect_cb(GIOChannel *chan, GError *conn_err, failed: error("%s", err_msg); - reply = connection_attempt_failed(iconn->pending_connect, err_msg); + reply = btd_error_failed(iconn->pending_connect, err_msg); g_dbus_send_message(idev->conn, reply); if (iconn->ctrl_io) @@ -859,8 +850,8 @@ static void control_connect_cb(GIOChannel *chan, GError *conn_err, if (conn_err) { error("%s", conn_err->message); - reply = connection_attempt_failed(iconn->pending_connect, - conn_err->message); + reply = btd_error_failed(iconn->pending_connect, + conn_err->message); goto failed; } @@ -874,7 +865,7 @@ static void control_connect_cb(GIOChannel *chan, GError *conn_err, BT_IO_OPT_INVALID); if (!io) { error("%s", err->message); - reply = connection_attempt_failed(iconn->pending_connect, + reply = btd_error_failed(iconn->pending_connect, err->message); g_error_free(err); g_io_channel_shutdown(chan, TRUE, NULL); @@ -960,17 +951,11 @@ static DBusMessage *input_device_connect(DBusConnection *conn, error("%s", err->message); dbus_message_unref(iconn->pending_connect); iconn->pending_connect = NULL; - reply = connection_attempt_failed(msg, err->message); + reply = btd_error_failed(msg, err->message); g_error_free(err); return reply; } -static DBusMessage *create_errno_message(DBusMessage *msg, int err) -{ - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "%s", strerror(err)); -} - static DBusMessage *input_device_disconnect(DBusConnection *conn, DBusMessage *msg, void *data) { @@ -979,7 +964,7 @@ static DBusMessage *input_device_disconnect(DBusConnection *conn, err = disconnect(idev, 0); if (err < 0) - return create_errno_message(msg, -err); + return btd_error_failed(msg, strerror(-err)); return g_dbus_create_reply(msg, DBUS_TYPE_INVALID); } -- 1.7.3.2 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 08/10] audio: use btd_error_failed() 2010-12-13 21:33 ` [PATCH 07/10] input: " Gustavo F. Padovan @ 2010-12-13 21:33 ` Gustavo F. Padovan 2010-12-13 21:33 ` [PATCH 09/10] serial: " Gustavo F. Padovan 0 siblings, 1 reply; 12+ messages in thread From: Gustavo F. Padovan @ 2010-12-13 21:33 UTC (permalink / raw) To: linux-bluetooth --- audio/control.c | 6 ++---- audio/device.c | 14 +++++--------- audio/gateway.c | 11 +++++------ audio/headset.c | 18 +++++------------- audio/sink.c | 9 +++------ audio/source.c | 9 +++------ audio/transport.c | 7 +------ 7 files changed, 24 insertions(+), 50 deletions(-) diff --git a/audio/control.c b/audio/control.c index 98b6682..75c0b51 100644 --- a/audio/control.c +++ b/audio/control.c @@ -1021,8 +1021,7 @@ static DBusMessage *volume_up(DBusConnection *conn, DBusMessage *msg, err = avctp_send_passthrough(control, VOL_UP_OP); if (err < 0) - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "%s", strerror(-err)); + return btd_error_failed(msg, strerror(-err)); return dbus_message_new_method_return(msg); } @@ -1047,8 +1046,7 @@ static DBusMessage *volume_down(DBusConnection *conn, DBusMessage *msg, err = avctp_send_passthrough(control, VOL_DOWN_OP); if (err < 0) - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "%s", strerror(-err)); + return btd_error_failed(msg, strerror(-err)); return dbus_message_new_method_return(msg); } diff --git a/audio/device.c b/audio/device.c index fe7aed4..e38e598 100644 --- a/audio/device.c +++ b/audio/device.c @@ -271,10 +271,9 @@ static void device_set_state(struct audio_device *dev, audio_state_t new_state) if (new_state == AUDIO_STATE_CONNECTED) reply = dbus_message_new_method_return(priv->conn_req); else - reply = g_dbus_create_error(priv->conn_req, - ERROR_INTERFACE - ".ConnectFailed", - "Connecting failed"); + reply = btd_error_failed(priv->conn_req, + "Connect Failed"); + dbus_message_unref(priv->conn_req); priv->conn_req = NULL; g_dbus_send_message(dev->conn, reply); @@ -532,8 +531,7 @@ static DBusMessage *dev_connect(DBusConnection *conn, DBusMessage *msg, struct avdtp *session = avdtp_get(&dev->src, &dev->dst); if (!session) - return g_dbus_create_error(msg, ERROR_INTERFACE - ".Failed", + return btd_error_failed(msg, "Failed to get AVDTP session"); sink_setup_stream(dev->sink, session); @@ -543,9 +541,7 @@ static DBusMessage *dev_connect(DBusConnection *conn, DBusMessage *msg, /* The previous calls should cause a call to the state callback to * indicate AUDIO_STATE_CONNECTING */ if (priv->state != AUDIO_STATE_CONNECTING) - return g_dbus_create_error(msg, ERROR_INTERFACE - ".ConnectFailed", - "Headset connect failed"); + return btd_error_failed(msg, "Connect Failed"); priv->conn_req = dbus_message_ref(msg); diff --git a/audio/gateway.c b/audio/gateway.c index 05b9ff7..4d38be7 100644 --- a/audio/gateway.c +++ b/audio/gateway.c @@ -247,8 +247,7 @@ static void rfcomm_connect_cb(GIOChannel *chan, GError *err, if (ret) reply = dbus_message_new_method_return(gw->msg); else - reply = g_dbus_create_error(gw->msg, ERROR_INTERFACE ".Failed", - "Can not pass file descriptor"); + reply = btd_error_failed(gw->msg, "Can't pass file descriptor"); g_dbus_send_message(dev->conn, reply); @@ -365,15 +364,15 @@ static DBusMessage *ag_connect(DBusConnection *conn, DBusMessage *msg, { struct audio_device *au_dev = (struct audio_device *) data; struct gateway *gw = au_dev->gateway; + int err; if (!gw->agent) return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", "Agent not assigned"); - if (get_records(au_dev) < 0) - return g_dbus_create_error(msg, ERROR_INTERFACE - ".ConnectAttemptFailed", - "Connect Attempt Failed"); + err = get_records(au_dev); + if (err < 0) + return btd_error_failed(msg, strerror(-err)); gw->msg = dbus_message_ref(msg); diff --git a/audio/headset.c b/audio/headset.c index 18fd866..34b2b89 100644 --- a/audio/headset.c +++ b/audio/headset.c @@ -1709,13 +1709,8 @@ static DBusMessage *hs_connect(DBusConnection *conn, DBusMessage *msg, device->auto_connect = FALSE; err = rfcomm_connect(device, NULL, NULL, NULL); - if (err == -ECONNREFUSED) - return g_dbus_create_error(msg, ERROR_INTERFACE ".NotAllowed", - "Too many connected devices"); - else if (err < 0) - return g_dbus_create_error(msg, ERROR_INTERFACE - ".ConnectAttemptFailed", - "Connect Attempt Failed"); + if (err < 0) + return btd_error_failed(msg, strerror(-err)); hs->auto_dc = FALSE; @@ -1747,8 +1742,7 @@ static DBusMessage *hs_ring(DBusConnection *conn, DBusMessage *msg, err = headset_send(hs, "\r\nRING\r\n"); if (err < 0) { dbus_message_unref(reply); - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "%s", strerror(-err)); + return btd_error_failed(msg, strerror(-err)); } ring_timer_cb(NULL); @@ -1815,8 +1809,7 @@ static DBusMessage *hs_play(DBusConnection *conn, DBusMessage *msg, err = sco_connect(device, NULL, NULL, NULL); if (err < 0) - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "%s", strerror(-err)); + return btd_error_failed(msg, strerror(-err)); hs->pending->msg = dbus_message_ref(msg); @@ -1900,8 +1893,7 @@ static DBusMessage *hs_set_gain(DBusConnection *conn, err = headset_send(hs, "\r\n+VG%c=%u\r\n", type, gain); if (err < 0) { dbus_message_unref(reply); - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "%s", strerror(-err)); + return btd_error_failed(msg, strerror(-err)); } } diff --git a/audio/sink.c b/audio/sink.c index 176a4ed..5746c55 100644 --- a/audio/sink.c +++ b/audio/sink.c @@ -435,8 +435,7 @@ static DBusMessage *sink_connect(DBusConnection *conn, sink->session = avdtp_get(&dev->src, &dev->dst); if (!sink->session) - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "Unable to get a session"); + return btd_error_failed(msg, "Unable to get a session"); if (sink->connect || sink->disconnect) return btd_error_busy(msg); @@ -445,8 +444,7 @@ static DBusMessage *sink_connect(DBusConnection *conn, return btd_error_already_connected(msg); if (!sink_setup_stream(sink, NULL)) - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "Failed to create a stream"); + return btd_error_failed(msg, "Failed to create a stream"); dev->auto_connect = FALSE; @@ -485,8 +483,7 @@ static DBusMessage *sink_disconnect(DBusConnection *conn, err = avdtp_close(sink->session, sink->stream, FALSE); if (err < 0) - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "%s", strerror(-err)); + return btd_error_failed(msg, strerror(-err)); pending = g_new0(struct pending_request, 1); pending->conn = dbus_connection_ref(conn); diff --git a/audio/source.c b/audio/source.c index c106eaa..29ceb0f 100644 --- a/audio/source.c +++ b/audio/source.c @@ -386,8 +386,7 @@ static DBusMessage *source_connect(DBusConnection *conn, source->session = avdtp_get(&dev->src, &dev->dst); if (!source->session) - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "Unable to get a session"); + return btd_error_failed(msg, "Unable to get a session"); if (source->connect || source->disconnect) return btd_error_busy(msg); @@ -396,8 +395,7 @@ static DBusMessage *source_connect(DBusConnection *conn, return btd_error_already_connected(msg); if (!source_setup_stream(source, NULL)) - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "Failed to create a stream"); + return btd_error_failed(msg, "Failed to create a stream"); dev->auto_connect = FALSE; @@ -436,8 +434,7 @@ static DBusMessage *source_disconnect(DBusConnection *conn, err = avdtp_close(source->session, source->stream, FALSE); if (err < 0) - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "%s", strerror(-err)); + return btd_error_failed(msg, strerror(-err)); pending = g_new0(struct pending_request, 1); pending->conn = dbus_connection_ref(conn); diff --git a/audio/transport.c b/audio/transport.c index e2ee400..bdec157 100644 --- a/audio/transport.c +++ b/audio/transport.c @@ -93,11 +93,6 @@ struct media_transport { DBusMessageIter *value); }; -static inline DBusMessage *error_failed(DBusMessage *msg, const char *desc) -{ - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", "%s", desc); -} - void media_transport_remove(struct media_transport *transport) { char *path; @@ -572,7 +567,7 @@ static DBusMessage *set_property(DBusConnection *conn, DBusMessage *msg, if (err < 0) { if (err == -EINVAL) return btd_error_invalid_args(msg); - return error_failed(msg, strerror(-err)); + return btd_error_failed(msg, strerror(-err)); } return g_dbus_create_reply(msg, DBUS_TYPE_INVALID); -- 1.7.3.2 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 09/10] serial: use btd_error_failed() 2010-12-13 21:33 ` [PATCH 08/10] audio: " Gustavo F. Padovan @ 2010-12-13 21:33 ` Gustavo F. Padovan 2010-12-13 21:33 ` [PATCH 10/10] src: " Gustavo F. Padovan 0 siblings, 1 reply; 12+ messages in thread From: Gustavo F. Padovan @ 2010-12-13 21:33 UTC (permalink / raw) To: linux-bluetooth --- serial/port.c | 20 +++++++++----------- serial/proxy.c | 8 ++------ 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/serial/port.c b/serial/port.c index 0d1e600..1458f06 100644 --- a/serial/port.c +++ b/serial/port.c @@ -248,7 +248,7 @@ static void open_notify(int fd, int err, struct serial_port *port) if (err) { /* Max tries exceeded */ port_release(port); - reply = failed(port->msg, strerror(err)); + reply = btd_error_failed(port->msg, strerror(err)); } else { port->fd = fd; reply = g_dbus_create_reply(port->msg, @@ -316,7 +316,7 @@ static void rfcomm_connect_cb(GIOChannel *chan, GError *conn_err, if (conn_err) { error("%s", conn_err->message); - reply = failed(port->msg, conn_err->message); + reply = btd_error_failed(port->msg, conn_err->message); goto fail; } @@ -335,7 +335,7 @@ static void rfcomm_connect_cb(GIOChannel *chan, GError *conn_err, if (port->id < 0) { int err = errno; error("ioctl(RFCOMMCREATEDEV): %s (%d)", strerror(err), err); - reply = failed(port->msg, strerror(err)); + reply = btd_error_failed(port->msg, strerror(err)); g_io_channel_shutdown(chan, TRUE, NULL); goto fail; } @@ -378,13 +378,13 @@ static void get_record_cb(sdp_list_t *recs, int err, gpointer user_data) if (err < 0) { error("Unable to get service record: %s (%d)", strerror(-err), -err); - reply = failed(port->msg, strerror(-err)); + reply = btd_error_failed(port->msg, strerror(-err)); goto failed; } if (!recs || !recs->data) { error("No record found"); - reply = failed(port->msg, "No record found"); + reply = btd_error_failed(port->msg, "No record found"); goto failed; } @@ -392,7 +392,7 @@ static void get_record_cb(sdp_list_t *recs, int err, gpointer user_data) if (sdp_get_access_protos(record, &protos) < 0) { error("Unable to get access protos from port record"); - reply = failed(port->msg, "Invalid channel"); + reply = btd_error_failed(port->msg, "Invalid channel"); goto failed; } @@ -409,7 +409,7 @@ static void get_record_cb(sdp_list_t *recs, int err, gpointer user_data) BT_IO_OPT_INVALID); if (!port->io) { error("%s", gerr->message); - reply = failed(port->msg, gerr->message); + reply = btd_error_failed(port->msg, gerr->message); g_error_free(gerr); goto failed; } @@ -505,13 +505,11 @@ static DBusMessage *port_connect(DBusConnection *conn, err = connect_port(port); if (err < 0) { - DBusMessage *reply; - error("%s", strerror(-err)); g_dbus_remove_watch(conn, port->listener_id); port->listener_id = 0; - reply = failed(msg, strerror(-err)); - return reply; + + return btd_error_failed(msg, strerror(-err)); } return NULL; diff --git a/serial/proxy.c b/serial/proxy.c index c779c4e..20aea7d 100644 --- a/serial/proxy.c +++ b/serial/proxy.c @@ -553,11 +553,8 @@ static DBusMessage *proxy_enable(DBusConnection *conn, err = enable_proxy(prx); if (err == -EALREADY) return failed(msg, "Already enabled"); - else if (err == -ENOMEM) - return failed(msg, "Unable to allocate new service record"); else if (err < 0) - return g_dbus_create_error(msg, ERROR_INTERFACE "Failed", - "Proxy enable failed (%s)", strerror(-err)); + return btd_error_failed(msg, strerror(-err)); return dbus_message_new_method_return(msg); } @@ -1051,8 +1048,7 @@ static DBusMessage *create_proxy(DBusConnection *conn, else if (err == -EALREADY) return btd_error_already_exists(msg); else if (err < 0) - return g_dbus_create_error(msg, ERROR_INTERFACE "Failed", - "Proxy creation failed (%s)", strerror(-err)); + return btd_error_failed(msg, strerror(-err)); proxy->owner = g_strdup(dbus_message_get_sender(msg)); proxy->watch = g_dbus_add_disconnect_watch(conn, proxy->owner, -- 1.7.3.2 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 10/10] src: use btd_error_failed() 2010-12-13 21:33 ` [PATCH 09/10] serial: " Gustavo F. Padovan @ 2010-12-13 21:33 ` Gustavo F. Padovan 0 siblings, 0 replies; 12+ messages in thread From: Gustavo F. Padovan @ 2010-12-13 21:33 UTC (permalink / raw) To: linux-bluetooth --- src/adapter.c | 37 +++++++++++++------------------------ src/device.c | 44 ++++++++++++-------------------------------- 2 files changed, 25 insertions(+), 56 deletions(-) diff --git a/src/adapter.c b/src/adapter.c index e37b200..47ee26a 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -146,12 +146,6 @@ static inline DBusMessage *adapter_not_ready(DBusMessage *msg) "Adapter is not ready"); } -static inline DBusMessage *failed_strerror(DBusMessage *msg, int err) -{ - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "%s", strerror(err)); -} - static inline DBusMessage *not_in_progress(DBusMessage *msg, const char *str) { return g_dbus_create_error(msg, ERROR_INTERFACE ".NotInProgress", @@ -523,7 +517,7 @@ static DBusMessage *set_discoverable(DBusConnection *conn, DBusMessage *msg, err = set_mode(adapter, mode, msg); if (err < 0) - return failed_strerror(msg, -err); + return btd_error_failed(msg, strerror(-err)); return NULL; } @@ -548,7 +542,7 @@ static DBusMessage *set_powered(DBusConnection *conn, DBusMessage *msg, err = set_mode(adapter, mode, msg); if (err < 0) - return failed_strerror(msg, -err); + return btd_error_failed(msg, strerror(-err)); return NULL; } @@ -570,7 +564,7 @@ static DBusMessage *set_pairable(DBusConnection *conn, DBusMessage *msg, err = set_mode(adapter, MODE_DISCOVERABLE, NULL); if (err < 0 && msg) - return failed_strerror(msg, -err); + return btd_error_failed(msg, strerror(-err)); store: @@ -775,7 +769,7 @@ static void confirm_mode_cb(struct agent *agent, DBusError *derr, void *data) err = set_mode(req->adapter, req->mode, NULL); if (err < 0) - reply = failed_strerror(req->msg, -err); + reply = btd_error_failed(req->msg, strerror(-err)); else reply = dbus_message_new_method_return(req->msg); @@ -906,7 +900,7 @@ static DBusMessage *set_name(DBusConnection *conn, DBusMessage *msg, if (adapter->up) { int err = adapter_ops->set_name(adapter->dev_id, name); if (err < 0) - return failed_strerror(msg, err); + return btd_error_failed(msg, strerror(-err)); adapter->name_stored = TRUE; } @@ -1185,7 +1179,7 @@ static DBusMessage *adapter_start_discovery(DBusConnection *conn, err = start_discovery(adapter); if (err < 0) - return failed_strerror(msg, -err); + return btd_error_failed(msg, strerror(-err)); done: req = create_session(adapter, conn, msg, 0, @@ -1208,8 +1202,7 @@ static DBusMessage *adapter_stop_discovery(DBusConnection *conn, req = find_session(adapter->disc_sessions, sender); if (!req) - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "Invalid discovery session"); + return btd_error_failed(msg, "Invalid discovery session"); session_unref(req); info("Stopping discovery"); @@ -1446,7 +1439,7 @@ static DBusMessage *request_session(DBusConnection *conn, confirm_mode_cb, req, NULL); if (err < 0) { session_unref(req); - return failed_strerror(msg, -err); + return btd_error_failed(msg, strerror(-err)); } return NULL; @@ -1461,8 +1454,7 @@ static DBusMessage *release_session(DBusConnection *conn, req = find_session(adapter->mode_sessions, sender); if (!req) - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "No Mode to release"); + return btd_error_failed(msg, "Invalid Session"); session_unref(req); @@ -1622,7 +1614,7 @@ static DBusMessage *create_device(DBusConnection *conn, err = device_browse(device, conn, msg, NULL, FALSE); if (err < 0) { adapter_remove_device(conn, adapter, device, TRUE); - return failed_strerror(msg, -err); + return btd_error_failed(msg, strerror(-err)); } return NULL; @@ -1676,8 +1668,7 @@ static DBusMessage *create_paired_device(DBusConnection *conn, device = adapter_get_device(conn, adapter, address); if (!device) - return g_dbus_create_error(msg, - ERROR_INTERFACE ".Failed", + return btd_error_failed(msg, "Unable to create a new device object"); return device_create_bonding(device, conn, msg, agent_path, cap); @@ -1788,9 +1779,7 @@ static DBusMessage *register_agent(DBusConnection *conn, DBusMessage *msg, agent = agent_create(adapter, name, path, cap, (agent_remove_cb) agent_removed, adapter); if (!agent) - return g_dbus_create_error(msg, - ERROR_INTERFACE ".Failed", - "Failed to create a new agent"); + return btd_error_failed(msg, "Failed to create a new agent"); adapter->agent = agent; @@ -2334,7 +2323,7 @@ static void set_mode_complete(struct btd_adapter *adapter) DBusMessage *reply; if (err < 0) - reply = failed_strerror(msg, -err); + reply = btd_error_failed(msg, strerror(-err)); else reply = g_dbus_create_reply(msg, DBUS_TYPE_INVALID); diff --git a/src/device.c b/src/device.c index 0f4dc0b..cec2153 100644 --- a/src/device.c +++ b/src/device.c @@ -157,20 +157,6 @@ static uint16_t uuid_list[] = { static GSList *device_drivers = NULL; -static DBusHandlerResult error_failed(DBusConnection *conn, - DBusMessage *msg, const char * desc) -{ - return error_common_reply(conn, msg, ERROR_INTERFACE ".Failed", desc); -} - -static DBusHandlerResult error_failed_errno(DBusConnection *conn, - DBusMessage *msg, int err) -{ - const char *desc = strerror(err); - - return error_failed(conn, msg, desc); -} - static void browse_request_free(struct browse_req *req) { if (req->listener_id) @@ -380,9 +366,7 @@ static DBusMessage *set_alias(DBusConnection *conn, DBusMessage *msg, err = write_device_alias(srcaddr, dstaddr, g_str_equal(alias, "") ? NULL : alias); if (err < 0) - return g_dbus_create_error(msg, - ERROR_INTERFACE ".Failed", - "%s", strerror(-err)); + return btd_error_failed(msg, strerror(-err)); g_free(device->alias); device->alias = g_str_equal(alias, "") ? NULL : g_strdup(alias); @@ -412,9 +396,7 @@ static DBusMessage *set_trust(DBusConnection *conn, DBusMessage *msg, err = write_trust(srcaddr, dstaddr, GLOBAL_TRUST, value); if (err < 0) - return g_dbus_create_error(msg, - ERROR_INTERFACE ".Failed", - "%s", strerror(-err)); + return btd_error_failed(msg, strerror(-err)); device->trusted = value; @@ -526,12 +508,9 @@ static DBusMessage *set_blocked(DBusConnection *conn, DBusMessage *msg, case 0: return dbus_message_new_method_return(msg); case EINVAL: - return g_dbus_create_error(msg, - ERROR_INTERFACE ".NotSupported", - "Kernel lacks blacklist support"); + return btd_error_failed(msg, "Kernel lacks blacklist support"); default: - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "%s", strerror(-err)); + return btd_error_failed(msg, strerror(-err)); } } @@ -627,8 +606,7 @@ static DBusMessage *discover_services(DBusConnection *conn, return NULL; fail: - return g_dbus_create_error(msg, ERROR_INTERFACE ".Failed", - "Discovery Failed"); + return btd_error_failed(msg, strerror(-err)); } static const char *browse_request_get_requestor(struct browse_req *req) @@ -1473,7 +1451,9 @@ send_reply: else if (dbus_message_is_method_call(req->msg, ADAPTER_INTERFACE, "CreateDevice")) { if (err < 0) { - error_failed_errno(req->conn, req->msg, -err); + DBusMessage *reply; + reply = btd_error_failed(req->msg, strerror(-err)); + g_dbus_send_message(req->conn, reply); goto cleanup; } @@ -1544,7 +1524,9 @@ static void primary_cb(GSList *services, int err, gpointer user_data) struct btd_device *device = req->device; if (err) { - error_failed_errno(req->conn, req->msg, -err); + DBusMessage *reply; + reply = btd_error_failed(req->msg, strerror(-err)); + g_dbus_send_message(req->conn, reply); goto done; } @@ -2000,9 +1982,7 @@ DBusMessage *device_create_bonding(struct btd_device *device, BT_IO_OPT_INVALID); if (io == NULL) { DBusMessage *reply; - reply = g_dbus_create_error(msg, - ERROR_INTERFACE ".ConnectionAttemptFailed", - "%s", err->message); + reply = btd_error_failed(msg, err->message); error("bt_io_connect: %s", err->message); g_error_free(err); return reply; -- 1.7.3.2 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 00/10] More btd_error_* patches 2010-12-13 21:32 [PATCH 00/10] More btd_error_* patches Gustavo F. Padovan 2010-12-13 21:32 ` [PATCH 01/10] Add btd_error_no_such_adapter() Gustavo F. Padovan @ 2010-12-14 8:56 ` Johan Hedberg 1 sibling, 0 replies; 12+ messages in thread From: Johan Hedberg @ 2010-12-14 8:56 UTC (permalink / raw) To: Gustavo F. Padovan; +Cc: linux-bluetooth Hi Gustavo, On Mon, Dec 13, 2010, Gustavo F. Padovan wrote: > This patch set adds a new error function btd_error_failed(), which has a str > parameter to enable a more accurate error report in the case the usual > btd_error_* does not fit. > > After this patch set there will 10 occurrences of g_dbus_create_error() inside > bluez code (not counting health/ here) Thanks. The patches are now upstream. However, I did have to push other fixes on top of them since a few functions that you assumed were returning a proper negative errno value were in fact only returning -1. Johan ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2010-12-14 8:56 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-12-13 21:32 [PATCH 00/10] More btd_error_* patches Gustavo F. Padovan 2010-12-13 21:32 ` [PATCH 01/10] Add btd_error_no_such_adapter() Gustavo F. Padovan 2010-12-13 21:32 ` [PATCH 02/10] src: use btd_error_invalid_args() Gustavo F. Padovan 2010-12-13 21:33 ` [PATCH 03/10] Add btd_error_failed() Gustavo F. Padovan 2010-12-13 21:33 ` [PATCH 04/10] plugins: use btd_error_failed() Gustavo F. Padovan 2010-12-13 21:33 ` [PATCH 05/10] attrib: " Gustavo F. Padovan 2010-12-13 21:33 ` [PATCH 06/10] network: " Gustavo F. Padovan 2010-12-13 21:33 ` [PATCH 07/10] input: " Gustavo F. Padovan 2010-12-13 21:33 ` [PATCH 08/10] audio: " Gustavo F. Padovan 2010-12-13 21:33 ` [PATCH 09/10] serial: " Gustavo F. Padovan 2010-12-13 21:33 ` [PATCH 10/10] src: " Gustavo F. Padovan 2010-12-14 8:56 ` [PATCH 00/10] More btd_error_* patches Johan Hedberg
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox