diff options
author | Johan Hedberg <johan.hedberg@nokia.com> | 2008-03-14 19:25:23 +0000 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@nokia.com> | 2008-03-14 19:25:23 +0000 |
commit | 1995ca360f09e8c8d49ee73985638111c3c68d4e (patch) | |
tree | 8e4c5f9325befd56fdf3bcadfafb50bcacb62308 | |
parent | 6a61b7495a0557ce79499a6815cdfbe672bf6cfb (diff) |
Send replies to agent register and unregister methods
-rw-r--r-- | hcid/adapter.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/hcid/adapter.c b/hcid/adapter.c index 0b1a3c9f..b509ae43 100644 --- a/hcid/adapter.c +++ b/hcid/adapter.c @@ -3643,6 +3643,7 @@ static DBusHandlerResult register_agent(DBusConnection *conn, const char *path, *name; struct agent *agent; struct adapter *adapter = data; + DBusMessage *reply; if (!hcid_dbus_use_experimental()) return error_unknown_method(conn, msg); @@ -3654,18 +3655,24 @@ static DBusHandlerResult register_agent(DBusConnection *conn, if (adapter->agent) return error_already_exists(conn, msg, "Agent already exists"); + reply = dbus_message_new_method_return(msg); + if (!reply) + return DBUS_HANDLER_RESULT_NEED_MEMORY; + name = dbus_message_get_sender(msg); agent = agent_create(name, path, NULL, (agent_remove_cb) agent_removed, adapter); - if (!agent) + if (!agent) { + dbus_message_unref(reply); return error_failed(conn, msg, "Failed to create a new agent"); + } adapter->agent = agent; name_listener_add(conn, name, (name_cb_t) agent_exited, adapter); - return DBUS_HANDLER_RESULT_HANDLED; + return send_message_and_unref(conn, reply); } static DBusHandlerResult unregister_agent(DBusConnection *conn, @@ -3673,6 +3680,7 @@ static DBusHandlerResult unregister_agent(DBusConnection *conn, { const char *path, *name; struct adapter *adapter = data; + DBusMessage *reply; if (!hcid_dbus_use_experimental()) return error_unknown_method(conn, msg); @@ -3686,13 +3694,17 @@ static DBusHandlerResult unregister_agent(DBusConnection *conn, if (!adapter->agent || !agent_matches(adapter->agent, name, path)) return error_does_not_exist(conn, msg, "No such agent"); + reply = dbus_message_new_method_return(msg); + if (!reply) + return DBUS_HANDLER_RESULT_NEED_MEMORY; + name_listener_remove(conn, name, (name_cb_t) agent_exited, adapter); agent_destroy(adapter->agent, FALSE); adapter->agent = NULL; - return DBUS_HANDLER_RESULT_HANDLED; + return send_message_and_unref(conn, reply); } const char *major_class_str(uint32_t class) |