From 45b9e246914b37b72966734f788dc3d9de190204 Mon Sep 17 00:00:00 2001 From: Claudio Takahasi Date: Wed, 1 Aug 2007 14:23:13 +0000 Subject: hcid: don't register the adapter D-Bus path when it is on raw mode --- hcid/main.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'hcid/main.c') diff --git a/hcid/main.c b/hcid/main.c index b58861a6..61d2fecd 100644 --- a/hcid/main.c +++ b/hcid/main.c @@ -523,14 +523,14 @@ static void init_device(int dev_id) if (ioctl(dd, HCIDEVUP, dev_id) < 0 && errno != EALREADY) { error("Can't init device hci%d: %s (%d)", dev_id, strerror(errno), errno); - exit(1); + goto fail; } if (hci_devinfo(dev_id, &di) < 0) - exit(1); + goto fail; if (hci_test_bit(HCI_RAW, &di.flags)) - exit(0); + goto done; if (hcid.offmode == HCID_OFFMODE_DEVDOWN) { char mode[16]; @@ -538,20 +538,31 @@ static void init_device(int dev_id) if (read_device_mode(&di.bdaddr, mode, sizeof(mode)) == 0 && strcmp(mode, "off") == 0) { ioctl(dd, HCIDEVDOWN, dev_id); - exit(0); + goto done; } } +done: hci_close_dev(dd); - exit(0); + +fail: + hci_close_dev(dd); + exit(1); } static void device_devreg_setup(int dev_id) { + struct hci_dev_info di; + if (hcid.auto_init) init_device(dev_id); - hcid_dbus_register_device(dev_id); + + if (hci_devinfo(dev_id, &di) < 0) + return; + + if (!hci_test_bit(HCI_RAW, &di.flags)) + hcid_dbus_register_device(dev_id); } static void device_devup_setup(int dev_id) -- cgit