diff options
Diffstat (limited to 'hcid')
-rw-r--r-- | hcid/dbus-device.c | 175 | ||||
-rw-r--r-- | hcid/dbus-error.c | 19 | ||||
-rw-r--r-- | hcid/dbus-manager.c | 37 | ||||
-rw-r--r-- | hcid/dbus.c | 44 | ||||
-rw-r--r-- | hcid/dbus.h | 4 |
5 files changed, 186 insertions, 93 deletions
diff --git a/hcid/dbus-device.c b/hcid/dbus-device.c index eb37deaf..7dc16b0e 100644 --- a/hcid/dbus-device.c +++ b/hcid/dbus-device.c @@ -79,10 +79,15 @@ static DBusMessage *handle_dev_get_address_req(DBusMessage *msg, void *data) struct hci_dbus_data *dbus_data = data; DBusMessage *reply; char str[18], *str_ptr = str; + int err; - get_device_address(dbus_data->dev_id, str, sizeof(str)); + err = get_device_address(dbus_data->dev_id, str, sizeof(str)); + if (err < 0) + return error_generic(msg, -err); reply = dbus_message_new_method_return(msg); + if (!reply) + return error_out_of_memory(msg); dbus_message_append_args(reply, DBUS_TYPE_STRING, &str_ptr, DBUS_TYPE_INVALID); @@ -95,10 +100,15 @@ static DBusMessage *handle_dev_get_version_req(DBusMessage *msg, void *data) struct hci_dbus_data *dbus_data = data; DBusMessage *reply; char str[20], *str_ptr = str; + int err; - get_device_version(dbus_data->dev_id, str, sizeof(str)); + err = get_device_version(dbus_data->dev_id, str, sizeof(str)); + if (err < 0) + return error_generic(msg, -err); reply = dbus_message_new_method_return(msg); + if (!reply) + return error_out_of_memory(msg); dbus_message_append_args(reply, DBUS_TYPE_STRING, &str_ptr, DBUS_TYPE_INVALID); @@ -111,10 +121,15 @@ static DBusMessage *handle_dev_get_revision_req(DBusMessage *msg, void *data) struct hci_dbus_data *dbus_data = data; DBusMessage *reply; char str[64], *str_ptr = str; + int err; - get_device_revision(dbus_data->dev_id, str, sizeof(str)); + err = get_device_revision(dbus_data->dev_id, str, sizeof(str)); + if (err < 0) + return error_generic(msg, -err); reply = dbus_message_new_method_return(msg); + if (!reply) + return error_out_of_memory(msg); dbus_message_append_args(reply, DBUS_TYPE_STRING, &str_ptr, DBUS_TYPE_INVALID); @@ -127,10 +142,15 @@ static DBusMessage *handle_dev_get_manufacturer_req(DBusMessage *msg, void *data struct hci_dbus_data *dbus_data = data; DBusMessage *reply; char str[64], *str_ptr = str; + int err; - get_device_manufacturer(dbus_data->dev_id, str, sizeof(str)); + err = get_device_manufacturer(dbus_data->dev_id, str, sizeof(str)); + if (err < 0) + return error_generic(msg, -err); reply = dbus_message_new_method_return(msg); + if (!reply) + return error_out_of_memory(msg); dbus_message_append_args(reply, DBUS_TYPE_STRING, &str_ptr, DBUS_TYPE_INVALID); @@ -143,10 +163,15 @@ static DBusMessage *handle_dev_get_company_req(DBusMessage *msg, void *data) struct hci_dbus_data *dbus_data = data; DBusMessage *reply; char str[64], *str_ptr = str; + int err; - get_device_company(dbus_data->dev_id, str, sizeof(str)); + err = get_device_company(dbus_data->dev_id, str, sizeof(str)); + if (err < 0) + return error_generic(msg, -err); reply = dbus_message_new_method_return(msg); + if (!reply) + return error_out_of_memory(msg); dbus_message_append_args(reply, DBUS_TYPE_STRING, &str_ptr, DBUS_TYPE_INVALID); @@ -161,6 +186,8 @@ static DBusMessage *handle_dev_get_features_req(DBusMessage *msg, void *data) DBusMessageIter array_iter; reply = dbus_message_new_method_return(msg); + if (!reply) + return error_out_of_memory(msg); dbus_message_iter_init_append(reply, &iter); @@ -197,6 +224,8 @@ static DBusMessage *handle_dev_get_mode_req(DBusMessage *msg, void *data) } reply = dbus_message_new_method_return(msg); + if (!reply) + return error_out_of_memory(msg); dbus_message_append_args(reply, DBUS_TYPE_STRING, &scan_mode, DBUS_TYPE_INVALID); @@ -207,7 +236,7 @@ static DBusMessage *handle_dev_get_mode_req(DBusMessage *msg, void *data) static DBusMessage *handle_dev_set_mode_req(DBusMessage *msg, void *data) { const struct hci_dbus_data *dbus_data = data; - DBusMessage *reply = NULL; + DBusMessage *reply; const char* scan_mode; uint8_t hci_mode; const uint8_t current_mode = dbus_data->mode; @@ -229,10 +258,8 @@ static DBusMessage *handle_dev_set_mode_req(DBusMessage *msg, void *data) return bluez_new_failure_msg(msg, BLUEZ_EDBUS_WRONG_PARAM); dd = hci_open_dev(dbus_data->dev_id); - if (dd < 0) { - syslog(LOG_ERR, "HCI device open failed: hci%d", dbus_data->dev_id); - return bluez_new_failure_msg(msg, BLUEZ_ESYSTEM_ENODEV); - } + if (dd < 0) + return error_no_such_device(msg); /* Check if the new requested mode is different from the current */ if (current_mode != hci_mode) { @@ -250,21 +277,22 @@ static DBusMessage *handle_dev_set_mode_req(DBusMessage *msg, void *data) if (hci_send_req(dd, &rq, 100) < 0) { syslog(LOG_ERR, "Sending write scan enable command failed: %s (%d)", strerror(errno), errno); - reply = bluez_new_failure_msg(msg, BLUEZ_ESYSTEM_OFFSET | errno); - goto failed; + hci_close_dev(dd); + return bluez_new_failure_msg(msg, BLUEZ_ESYSTEM_OFFSET | errno); } if (status) { syslog(LOG_ERR, "Setting scan enable failed with status 0x%02x", status); - reply = bluez_new_failure_msg(msg, BLUEZ_EBT_OFFSET | status); - goto failed; + hci_close_dev(dd); + return bluez_new_failure_msg(msg, BLUEZ_EBT_OFFSET | status); } } - reply = dbus_message_new_method_return(msg); + hci_close_dev(dd); -failed: - close(dd); + reply = dbus_message_new_method_return(msg); + if (!reply) + return error_out_of_memory(msg); return reply; } @@ -272,9 +300,11 @@ failed: static DBusMessage *handle_dev_get_discoverable_to_req(DBusMessage *msg, void *data) { const struct hci_dbus_data *dbus_data = data; - DBusMessage *reply = NULL; + DBusMessage *reply; reply = dbus_message_new_method_return(msg); + if (!reply) + return error_out_of_memory(msg); dbus_message_append_args(reply, DBUS_TYPE_UINT32, &dbus_data->discoverable_timeout, DBUS_TYPE_INVALID); @@ -285,7 +315,7 @@ static DBusMessage *handle_dev_get_discoverable_to_req(DBusMessage *msg, void *d static DBusMessage *handle_dev_set_discoverable_to_req(DBusMessage *msg, void *data) { struct hci_dbus_data *dbus_data = data; - DBusMessage *reply = NULL; + DBusMessage *reply; DBusMessageIter iter; uint32_t timeout; @@ -295,6 +325,8 @@ static DBusMessage *handle_dev_set_discoverable_to_req(DBusMessage *msg, void *d dbus_data->discoverable_timeout = timeout; reply = dbus_message_new_method_return(msg); + if (!reply) + return error_out_of_memory(msg); return reply; } @@ -302,7 +334,7 @@ static DBusMessage *handle_dev_set_discoverable_to_req(DBusMessage *msg, void *d static DBusMessage *handle_dev_is_connectable_req(DBusMessage *msg, void *data) { const struct hci_dbus_data *dbus_data = data; - DBusMessage *reply = NULL; + DBusMessage *reply; const uint8_t hci_mode = dbus_data->mode; dbus_bool_t connectable = FALSE; @@ -310,6 +342,8 @@ static DBusMessage *handle_dev_is_connectable_req(DBusMessage *msg, void *data) connectable = TRUE; reply = dbus_message_new_method_return(msg); + if (!reply) + return error_out_of_memory(msg); dbus_message_append_args(reply, DBUS_TYPE_BOOLEAN, &connectable, DBUS_TYPE_INVALID); @@ -320,7 +354,7 @@ static DBusMessage *handle_dev_is_connectable_req(DBusMessage *msg, void *data) static DBusMessage *handle_dev_is_discoverable_req(DBusMessage *msg, void *data) { const struct hci_dbus_data *dbus_data = data; - DBusMessage *reply = NULL; + DBusMessage *reply; const uint8_t hci_mode = dbus_data->mode; dbus_bool_t discoverable = FALSE; @@ -328,6 +362,8 @@ static DBusMessage *handle_dev_is_discoverable_req(DBusMessage *msg, void *data) discoverable = TRUE; reply = dbus_message_new_method_return(msg); + if (!reply) + return error_out_of_memory(msg); dbus_message_append_args(reply, DBUS_TYPE_BOOLEAN, &discoverable, DBUS_TYPE_INVALID); @@ -341,6 +377,8 @@ static DBusMessage *handle_dev_get_major_class_req(DBusMessage *msg, void *data) const char *str_ptr = "computer"; reply = dbus_message_new_method_return(msg); + if (!reply) + return error_out_of_memory(msg); /*FIXME: Check the real device major class */ dbus_message_append_args(reply, DBUS_TYPE_STRING, &str_ptr, @@ -359,19 +397,21 @@ static DBusMessage *handle_dev_get_minor_class_req(DBusMessage *msg, void *data) int dd; dd = hci_open_dev(dbus_data->dev_id); - if (dd < 0) { - syslog(LOG_ERR, "HCI device open failed: hci%d", dbus_data->dev_id); - return bluez_new_failure_msg(msg, BLUEZ_ESYSTEM_ENODEV); - } + if (dd < 0) + return error_no_such_device(msg); if (hci_read_class_of_dev(dd, cls, 1000) < 0) { syslog(LOG_ERR, "Can't read class of device on hci%d: %s(%d)", dbus_data->dev_id, strerror(errno), errno); hci_close_dev(dd); - return bluez_new_failure_msg(msg, BLUEZ_ESYSTEM_OFFSET | errno); + return error_generic(msg, -errno); } + hci_close_dev(dd); + reply = dbus_message_new_method_return(msg); + if (!reply) + return error_out_of_memory(msg); /* FIXME: Currently, only computer major class is supported */ if ((cls[1] & 0x1f) != 1) @@ -389,8 +429,6 @@ failed: dbus_message_append_args(reply, DBUS_TYPE_STRING, &str_ptr, DBUS_TYPE_INVALID); - hci_close_dev(dd); - return reply; } @@ -521,10 +559,15 @@ static DBusMessage *handle_dev_get_name_req(DBusMessage *msg, void *data) struct hci_dbus_data *dbus_data = data; DBusMessage *reply; char str[249], *str_ptr = str; + int err; - get_device_name(dbus_data->dev_id, str, sizeof(str)); + err = get_device_name(dbus_data->dev_id, str, sizeof(str)); + if (err < 0) + return error_generic(msg, -err); reply = dbus_message_new_method_return(msg); + if (!reply) + return error_out_of_memory(msg); dbus_message_append_args(reply, DBUS_TYPE_STRING, &str_ptr, DBUS_TYPE_INVALID); @@ -539,6 +582,7 @@ static DBusMessage *handle_dev_set_name_req(DBusMessage *msg, void *data) DBusMessage *reply; bdaddr_t bdaddr; char *str_ptr; + int err; dbus_message_iter_init(msg, &iter); dbus_message_iter_get_basic(&iter, &str_ptr); @@ -552,9 +596,13 @@ static DBusMessage *handle_dev_set_name_req(DBusMessage *msg, void *data) write_local_name(&bdaddr, str_ptr); - set_device_name(dbus_data->dev_id, str_ptr); + err = set_device_name(dbus_data->dev_id, str_ptr); + if (err < 0) + return error_generic(msg, -err); reply = dbus_message_new_method_return(msg); + if (!reply) + return error_out_of_memory(msg); return reply; } @@ -591,14 +639,16 @@ static DBusMessage *handle_dev_get_remote_manufacturer_req(DBusMessage *msg, voi if (!str) return bluez_new_failure_msg(msg, BLUEZ_ESYSTEM_OFFSET | ENXIO); - reply = dbus_message_new_method_return(msg); - compid = atoi(str); free(str); str = bt_compidtostr(compid); + reply = dbus_message_new_method_return(msg); + if (!reply) + return error_out_of_memory(msg); + dbus_message_append_args(reply, DBUS_TYPE_STRING, &str, DBUS_TYPE_INVALID); @@ -614,6 +664,7 @@ static DBusMessage *handle_dev_get_remote_company_req(DBusMessage *msg, void *da dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &str_bdaddr, DBUS_TYPE_INVALID); + str2ba(str_bdaddr, &bdaddr); ba2oui(&bdaddr, oui); @@ -622,10 +673,15 @@ static DBusMessage *handle_dev_get_remote_company_req(DBusMessage *msg, void *da return bluez_new_failure_msg(msg, BLUEZ_EDBUS_RECORD_NOT_FOUND); reply = dbus_message_new_method_return(msg); + if (!reply) { + reply = error_out_of_memory(msg); + goto done; + } dbus_message_append_args(reply, DBUS_TYPE_STRING, &tmp, DBUS_TYPE_INVALID); +done: free(tmp); return reply; @@ -655,10 +711,15 @@ static DBusMessage *handle_dev_get_remote_name_req(DBusMessage *msg, void *data) return bluez_new_failure_msg(msg, BLUEZ_EDBUS_RECORD_NOT_FOUND); reply = dbus_message_new_method_return(msg); + if (!reply) { + reply = error_out_of_memory(msg); + goto done; + } dbus_message_append_args(reply, DBUS_TYPE_STRING, &name, DBUS_TYPE_INVALID); +done: free(name); return reply; @@ -680,9 +741,11 @@ static DBusMessage *handle_dev_get_remote_alias_req(DBusMessage *msg, void *data err = get_device_alias(dbus_data->dev_id, &bdaddr, str, sizeof(str)); if (err < 0) - return bluez_new_failure_msg(msg, BLUEZ_ESYSTEM_OFFSET | -err); + return error_generic(msg, -err); reply = dbus_message_new_method_return(msg); + if (!reply) + return error_out_of_memory(msg); dbus_message_append_args(reply, DBUS_TYPE_STRING, &str_ptr, DBUS_TYPE_INVALID); @@ -698,6 +761,7 @@ static DBusMessage *handle_dev_set_remote_alias_req(DBusMessage *msg, void *data DBusMessage *reply, *signal; char *str_ptr, *addr_ptr; bdaddr_t bdaddr; + int err; dbus_message_iter_init(msg, &iter); dbus_message_iter_get_basic(&iter, &addr_ptr); @@ -711,7 +775,9 @@ static DBusMessage *handle_dev_set_remote_alias_req(DBusMessage *msg, void *data str2ba(addr_ptr, &bdaddr); - set_device_alias(dbus_data->dev_id, &bdaddr, str_ptr); + err = set_device_alias(dbus_data->dev_id, &bdaddr, str_ptr); + if (err < 0) + return error_generic(msg, -err); signal = dev_signal_factory(dbus_data->dev_id, DEV_SIG_REMOTE_ALIAS_CHANGED, DBUS_TYPE_STRING, &addr_ptr, @@ -724,6 +790,8 @@ static DBusMessage *handle_dev_set_remote_alias_req(DBusMessage *msg, void *data } reply = dbus_message_new_method_return(msg); + if (!reply) + return error_out_of_memory(msg); return reply; } @@ -748,10 +816,15 @@ static DBusMessage *handle_dev_last_seen_req(DBusMessage *msg, void *data) return bluez_new_failure_msg(msg, BLUEZ_ESYSTEM_OFFSET | ENXIO); reply = dbus_message_new_method_return(msg); + if (!reply) { + reply = error_out_of_memory(msg); + goto done; + } dbus_message_append_args(reply, DBUS_TYPE_STRING, &str, DBUS_TYPE_INVALID); +done: free(str); return reply; @@ -777,10 +850,15 @@ static DBusMessage *handle_dev_last_used_req(DBusMessage *msg, void *data) return bluez_new_failure_msg(msg, BLUEZ_ESYSTEM_OFFSET | ENXIO); reply = dbus_message_new_method_return(msg); + if (!reply) { + reply = error_out_of_memory(msg); + goto done; + } dbus_message_append_args(reply, DBUS_TYPE_STRING, &str, DBUS_TYPE_INVALID); +done: free(str); return reply; @@ -798,9 +876,8 @@ static DBusMessage *handle_dev_create_bonding_req(DBusMessage *msg, void *data) bdaddr_t bdaddr; int dd, dev_id; - dbus_message_get_args(msg, NULL, - DBUS_TYPE_STRING, &str_bdaddr, - DBUS_TYPE_INVALID); + dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &str_bdaddr, + DBUS_TYPE_INVALID); str2ba(str_bdaddr, &bdaddr); @@ -814,7 +891,7 @@ static DBusMessage *handle_dev_create_bonding_req(DBusMessage *msg, void *data) dd = hci_open_dev(dev_id); if (dd < 0) - return bluez_new_failure_msg(msg, BLUEZ_ESYSTEM_ENODEV); + return error_no_such_device(msg); cr = malloc(sizeof(*cr) + sizeof(struct hci_conn_info)); if (!cr) { @@ -875,7 +952,7 @@ static DBusMessage *handle_dev_remove_bonding_req(DBusMessage *msg, void *data) dd = hci_open_dev(dbus_data->dev_id); if (dd < 0) - return bluez_new_failure_msg(msg, BLUEZ_ESYSTEM_ENODEV); + return error_no_such_device(msg); get_device_address(dbus_data->dev_id, addr, sizeof(addr)); @@ -1075,11 +1152,8 @@ static DBusMessage *handle_dev_discover_req(DBusMessage *msg, void *data) int dd; dd = hci_open_dev(dbus_data->dev_id); - if (dd < 0) { - syslog(LOG_ERR, "Unable to open device %d: %s (%d)", - dbus_data->dev_id, strerror(errno), errno); - return bluez_new_failure_msg(msg, BLUEZ_ESYSTEM_OFFSET + errno); - } + if (dd < 0) + return error_no_such_device(msg); memset(&cp, 0, sizeof(cp)); cp.lap[0] = lap & 0xff; @@ -1121,11 +1195,8 @@ static DBusMessage *handle_dev_discover_cancel_req(DBusMessage *msg, void *data) int dd; dd = hci_open_dev(dbus_data->dev_id); - if (dd < 0) { - syslog(LOG_ERR, "Unable to open device %d: %s (%d)", - dbus_data->dev_id, strerror(errno), errno); - return bluez_new_failure_msg(msg, BLUEZ_ESYSTEM_OFFSET + errno); - } + if (dd < 0) + return error_no_such_device(msg); memset(&rq, 0, sizeof(rq)); rq.ogf = OGF_LINK_CTL; @@ -1226,7 +1297,8 @@ DBusHandlerResult msg_func_device(DBusConnection *conn, DBusMessage *msg, void * signature = dbus_message_get_signature(msg); iface = dbus_message_get_interface(msg); - syslog(LOG_INFO, "[%s,%d] path:%s, method:%s", __PRETTY_FUNCTION__, __LINE__, dbus_message_get_path(msg), method); + syslog(LOG_INFO, "Device path:%s method:%s", + dbus_message_get_path(msg), method); if (strcmp(DEVICE_INTERFACE, iface)) return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; @@ -1261,7 +1333,8 @@ failed: if (reply) { if (!dbus_connection_send (conn, reply, NULL)) - syslog(LOG_ERR, "Can't send reply message!"); + syslog(LOG_ERR, "Can't send reply message"); + dbus_message_unref(reply); } diff --git a/hcid/dbus-error.c b/hcid/dbus-error.c index df8913ad..88e5bd7f 100644 --- a/hcid/dbus-error.c +++ b/hcid/dbus-error.c @@ -156,3 +156,22 @@ DBusMessage *bluez_new_failure_msg(DBusMessage *msg, const uint32_t ecode) return reply; } + +DBusMessage *error_generic(DBusMessage *msg, int err) +{ + const char *str = strerror(err); + + return dbus_message_new_error(msg, ERROR_INTERFACE ".UnknownError", str); +} + +DBusMessage *error_out_of_memory(DBusMessage *msg) +{ + return dbus_message_new_error(msg, ERROR_INTERFACE ".OutOfMemory", + "Out of memory"); +} + +DBusMessage *error_no_such_device(DBusMessage *msg) +{ + return dbus_message_new_error(msg, ERROR_INTERFACE ".NoSuchDevice", + "No such device"); +} diff --git a/hcid/dbus-manager.c b/hcid/dbus-manager.c index 47160b04..4e6b98c3 100644 --- a/hcid/dbus-manager.c +++ b/hcid/dbus-manager.c @@ -46,34 +46,31 @@ static DBusMessage *handle_mgr_list_devices_req(DBusMessage *msg, void *data) DBusMessage *reply; struct hci_dev_list_req *dl; struct hci_dev_req *dr; - int i, sk = -1; + int i, sk; sk = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI); - if (sk < 0) { - syslog(LOG_ERR, "Can't open HCI socket: %s (%d)", strerror(errno), errno); - return bluez_new_failure_msg(msg, BLUEZ_ESYSTEM_OFFSET + errno); - } + if (sk < 0) + return error_generic(msg, errno); dl = malloc(HCI_MAX_DEV * sizeof(*dr) + sizeof(*dl)); if (!dl) { - syslog(LOG_ERR, "Can't allocate memory"); close(sk); - return bluez_new_failure_msg(msg, BLUEZ_EDBUS_NO_MEM); + return error_out_of_memory(msg); } dl->dev_num = HCI_MAX_DEV; dr = dl->dev_req; if (ioctl(sk, HCIGETDEVLIST, dl) < 0) { - reply = bluez_new_failure_msg(msg, BLUEZ_ESYSTEM_OFFSET + errno); + reply = error_generic(msg, errno); goto failed; } dr = dl->dev_req; reply = dbus_message_new_method_return(msg); - if (reply == NULL) { - syslog(LOG_ERR, "Out of memory while calling dbus_message_new_method_return"); + if (!reply) { + reply = error_out_of_memory(msg); goto failed; } @@ -115,13 +112,11 @@ static DBusMessage *handle_mgr_default_device_req(DBusMessage *msg, void *data) int default_dev = get_default_dev_id(); if (default_dev < 0) - return bluez_new_failure_msg(msg, BLUEZ_ESYSTEM_ENODEV); + return error_no_such_device(msg); reply = dbus_message_new_method_return(msg); - if (!reply) { - syslog(LOG_ERR, "Out of memory while calling dbus_message_new_method_return"); - return reply; - } + if (!reply) + return error_out_of_memory(msg); snprintf(path, sizeof(path), "%s/hci%d", DEVICE_PATH, default_dev); @@ -132,8 +127,8 @@ static DBusMessage *handle_mgr_default_device_req(DBusMessage *msg, void *data) } static const struct service_data mgr_services[] = { - { MGR_LIST_DEVICES, handle_mgr_list_devices_req, MGR_LIST_DEVICES_SIGNATURE }, - { MGR_DEFAULT_DEVICE, handle_mgr_default_device_req, MGR_DEFAULT_DEVICE_SIGNATURE }, + { MGR_LIST_DEVICES, handle_mgr_list_devices_req, MGR_LIST_DEVICES_SIGNATURE }, + { MGR_DEFAULT_DEVICE, handle_mgr_default_device_req, MGR_DEFAULT_DEVICE_SIGNATURE }, { NULL, NULL, NULL } }; @@ -151,9 +146,10 @@ DBusHandlerResult msg_func_manager(DBusConnection *conn, DBusMessage *msg, void method = dbus_message_get_member(msg); signature = dbus_message_get_signature(msg); - syslog(LOG_INFO, "[%s,%d] path:%s, method:%s", __PRETTY_FUNCTION__, __LINE__, dbus_message_get_path(msg), method); + syslog(LOG_INFO, "Manager path:%s method:%s", + dbus_message_get_path(msg), method); - if (strcmp(iface, MANAGER_INTERFACE) != 0) + if (!strcmp(iface, MANAGER_INTERFACE)) return ret; for (handlers = mgr_services; handlers->name != NULL; handlers++) { @@ -175,7 +171,8 @@ DBusHandlerResult msg_func_manager(DBusConnection *conn, DBusMessage *msg, void if (reply) { if (!dbus_connection_send (conn, reply, NULL)) - syslog(LOG_ERR, "Can't send reply message!"); + syslog(LOG_ERR, "Can't send reply message"); + dbus_message_unref(reply); } diff --git a/hcid/dbus.c b/hcid/dbus.c index d508bf76..fccac0b2 100644 --- a/hcid/dbus.c +++ b/hcid/dbus.c @@ -223,7 +223,7 @@ static gboolean register_dbus_path(const char *path, uint16_t path_id, uint16_t gboolean ret = FALSE; struct hci_dbus_data *data = NULL; - syslog(LOG_INFO, "[%s,%d] path:%s, fallback:%d", __PRETTY_FUNCTION__, __LINE__, path, fallback); + syslog(LOG_INFO, "Register path:%s fallback:%d", path, fallback); data = malloc(sizeof(struct hci_dbus_data)); if (data == NULL) { @@ -240,12 +240,12 @@ static gboolean register_dbus_path(const char *path, uint16_t path_id, uint16_t if (fallback) { if (!dbus_connection_register_fallback(connection, path, pvtable, data)) { - syslog(LOG_ERR, "DBUS failed to register %s fallback", path); + syslog(LOG_ERR, "D-Bus failed to register %s fallback", path); goto failed; } } else { if (!dbus_connection_register_object_path(connection, path, pvtable, data)) { - syslog(LOG_ERR, "DBUS failed to register %s object", path); + syslog(LOG_ERR, "D-Bus failed to register %s object", path); goto failed; } } @@ -263,13 +263,13 @@ static gboolean unregister_dbus_path(const char *path) { void *data; - syslog(LOG_INFO, "[%s,%d] path:%s", __PRETTY_FUNCTION__, __LINE__, path); + syslog(LOG_INFO, "Unregister path:%s", path); if (dbus_connection_get_object_path_data(connection, path, &data) && data) free(data); if (!dbus_connection_unregister_object_path (connection, path)) { - syslog(LOG_ERR, "DBUS failed to unregister %s object", path); + syslog(LOG_ERR, "D-Bus failed to unregister %s object", path); return FALSE; } @@ -375,7 +375,7 @@ gboolean hcid_dbus_unregister_device(uint16_t id) message = dbus_message_new_signal(MANAGER_PATH, MANAGER_INTERFACE, BLUEZ_MGR_DEV_REMOVED); if (message == NULL) { - syslog(LOG_ERR, "Can't allocate D-BUS remote name message"); + syslog(LOG_ERR, "Can't allocate D-Bus remote name message"); goto failed; } @@ -385,7 +385,7 @@ gboolean hcid_dbus_unregister_device(uint16_t id) DBUS_TYPE_INVALID); if (!dbus_connection_send(connection, message, NULL)) { - syslog(LOG_ERR, "Can't send D-BUS added device message"); + syslog(LOG_ERR, "Can't send D-Bus added device message"); goto failed; } @@ -419,7 +419,7 @@ void hcid_dbus_request_pin(int dev, bdaddr_t *sba, struct hci_conn_info *ci) message = dbus_message_new_method_call(PINAGENT_SERVICE_NAME, PINAGENT_PATH, PINAGENT_INTERFACE, PIN_REQUEST); if (message == NULL) { - syslog(LOG_ERR, "Couldn't allocate D-BUS message"); + syslog(LOG_ERR, "Couldn't allocate D-Bus message"); goto failed; } @@ -434,7 +434,7 @@ void hcid_dbus_request_pin(int dev, bdaddr_t *sba, struct hci_conn_info *ci) if (dbus_connection_send_with_reply(connection, message, &pending, TIMEOUT) == FALSE) { - syslog(LOG_ERR, "D-BUS send failed"); + syslog(LOG_ERR, "D-Bus send failed"); goto failed; } @@ -483,7 +483,7 @@ void hcid_dbus_bonding_created_complete(bdaddr_t *local, bdaddr_t *peer, const u message = dbus_message_new_signal(path, DEVICE_INTERFACE, name); if (message == NULL) { - syslog(LOG_ERR, "Can't allocate D-BUS remote name message"); + syslog(LOG_ERR, "Can't allocate D-Bus remote name message"); goto failed; } @@ -492,7 +492,7 @@ void hcid_dbus_bonding_created_complete(bdaddr_t *local, bdaddr_t *peer, const u DBUS_TYPE_INVALID); if (dbus_connection_send(connection, message, NULL) == FALSE) { - syslog(LOG_ERR, "Can't send D-BUS remote name message"); + syslog(LOG_ERR, "Can't send D-Bus remote name message"); goto failed; } @@ -527,12 +527,12 @@ void hcid_dbus_inquiry_start(bdaddr_t *local) message = dbus_message_new_signal(path, DEVICE_INTERFACE, DEV_SIG_DISCOVER_START); if (message == NULL) { - syslog(LOG_ERR, "Can't allocate D-BUS inquiry start message"); + syslog(LOG_ERR, "Can't allocate D-Bus inquiry start message"); goto failed; } if (dbus_connection_send(connection, message, NULL) == FALSE) { - syslog(LOG_ERR, "Can't send D-BUS inquiry start message"); + syslog(LOG_ERR, "Can't send D-Bus inquiry start message"); goto failed; } @@ -564,12 +564,12 @@ void hcid_dbus_inquiry_complete(bdaddr_t *local) message = dbus_message_new_signal(path, DEVICE_INTERFACE, DEV_SIG_DISCOVER_COMPLETE); if (message == NULL) { - syslog(LOG_ERR, "Can't allocate D-BUS inquiry complete message"); + syslog(LOG_ERR, "Can't allocate D-Bus inquiry complete message"); goto failed; } if (dbus_connection_send(connection, message, NULL) == FALSE) { - syslog(LOG_ERR, "Can't send D-BUS inquiry complete message"); + syslog(LOG_ERR, "Can't send D-Bus inquiry complete message"); goto failed; } @@ -604,7 +604,7 @@ void hcid_dbus_inquiry_result(bdaddr_t *local, bdaddr_t *peer, uint32_t class, i message = dbus_message_new_signal(path, DEVICE_INTERFACE, DEV_SIG_DISCOVER_RESULT); if (message == NULL) { - syslog(LOG_ERR, "Can't allocate D-BUS inquiry result message"); + syslog(LOG_ERR, "Can't allocate D-Bus inquiry result message"); goto failed; } @@ -615,7 +615,7 @@ void hcid_dbus_inquiry_result(bdaddr_t *local, bdaddr_t *peer, uint32_t class, i DBUS_TYPE_INVALID); if (dbus_connection_send(connection, message, NULL) == FALSE) { - syslog(LOG_ERR, "Can't send D-BUS inquiry result message"); + syslog(LOG_ERR, "Can't send D-Bus inquiry result message"); goto failed; } @@ -650,7 +650,7 @@ void hcid_dbus_remote_name(bdaddr_t *local, bdaddr_t *peer, char *name) message = dbus_message_new_signal(path, DEVICE_INTERFACE, DEV_SIG_REMOTE_NAME_CHANGED); if (message == NULL) { - syslog(LOG_ERR, "Can't allocate D-BUS remote name message"); + syslog(LOG_ERR, "Can't allocate D-Bus remote name message"); goto failed; } @@ -660,7 +660,7 @@ void hcid_dbus_remote_name(bdaddr_t *local, bdaddr_t *peer, char *name) DBUS_TYPE_INVALID); if (dbus_connection_send(connection, message, NULL) == FALSE) { - syslog(LOG_ERR, "Can't send D-BUS remote name message"); + syslog(LOG_ERR, "Can't send D-Bus remote name message"); goto failed; } @@ -1108,7 +1108,7 @@ void hcid_dbus_setname_complete(bdaddr_t *local) signal = dev_signal_factory(id, DEV_SIG_NAME_CHANGED, DBUS_TYPE_STRING, &pname, DBUS_TYPE_INVALID); if (dbus_connection_send(connection, signal, NULL) == FALSE) { - syslog(LOG_ERR, "Can't send D-BUS %s signal", DEV_SIG_NAME_CHANGED); + syslog(LOG_ERR, "Can't send D-Bus %s signal", DEV_SIG_NAME_CHANGED); goto failed; } @@ -1204,7 +1204,7 @@ void hcid_dbus_setscan_enable_complete(bdaddr_t *local) message = dbus_message_new_signal(path, DEVICE_INTERFACE, DEV_SIG_MODE_CHANGED); if (message == NULL) { - syslog(LOG_ERR, "Can't allocate D-BUS inquiry complete message"); + syslog(LOG_ERR, "Can't allocate D-Bus inquiry complete message"); goto failed; } @@ -1213,7 +1213,7 @@ void hcid_dbus_setscan_enable_complete(bdaddr_t *local) DBUS_TYPE_INVALID); if (dbus_connection_send(connection, message, NULL) == FALSE) { - syslog(LOG_ERR, "Can't send D-BUS ModeChanged(%x) signal", rp.enable); + syslog(LOG_ERR, "Can't send D-Bus ModeChanged signal"); goto failed; } diff --git a/hcid/dbus.h b/hcid/dbus.h index 617d5006..c526e8e7 100644 --- a/hcid/dbus.h +++ b/hcid/dbus.h @@ -87,6 +87,10 @@ DBusConnection *get_dbus_connection(void); int get_default_dev_id(void); +DBusMessage *error_generic(DBusMessage *msg, int err); +DBusMessage *error_out_of_memory(DBusMessage *msg); +DBusMessage *error_no_such_device(DBusMessage *msg); + /*======================================================================== BlueZ D-Bus Manager service definitions "/org/bluez/Manager" *========================================================================*/ |