diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/adapter.c | 16 | ||||
| -rw-r--r-- | src/main.c | 5 | ||||
| -rw-r--r-- | src/manager.c | 2 | 
3 files changed, 14 insertions, 9 deletions
| diff --git a/src/adapter.c b/src/adapter.c index 854e419f..0f427ef4 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -2512,7 +2512,7 @@ static int get_pairable_timeout(const char *src)  	return main_opts.pairto;  } -static void adapter_up(struct btd_adapter *adapter, int dd) +static int adapter_up(struct btd_adapter *adapter, int dd)  {  	char mode[14], srcaddr[18];  	int i; @@ -2555,9 +2555,7 @@ static void adapter_up(struct btd_adapter *adapter, int dd)  			else  				write_device_mode(&adapter->bdaddr, mode); -			adapter_up(adapter, dd); - -			return; +			return adapter_up(adapter, dd);  		}  	} else if (!g_str_equal(mode, "connectable") &&  			adapter->discov_timeout == 0) { @@ -2604,8 +2602,12 @@ proceed:  		adapter->initialized = TRUE;  	} -	if (dev_down) +	if (dev_down) {  		ioctl(dd, HCIDEVDOWN, adapter->dev_id); +		return 1; +	} + +	return 0;  }  int adapter_start(struct btd_adapter *adapter) @@ -2712,13 +2714,13 @@ setup:  		adapter->state &= ~STD_INQUIRY;  	adapter_setup(adapter, dd); -	adapter_up(adapter, dd); +	err = adapter_up(adapter, dd);  	hci_close_dev(dd);  	info("Adapter %s has been enabled", adapter->path); -	return 0; +	return err;  }  static void reply_pending_requests(struct btd_adapter *adapter) @@ -484,7 +484,10 @@ static void device_devup_setup(int dev_id)  	configure_device(dev_id);  	start_security_manager(dev_id); -	manager_start_adapter(dev_id); + +	/* Return value 1 means ioctl(DEVDOWN) was performed */ +	if (manager_start_adapter(dev_id) == 1) +		stop_security_manager(dev_id);  }  static void init_all_devices(int ctl) diff --git a/src/manager.c b/src/manager.c index 10876161..b290852e 100644 --- a/src/manager.c +++ b/src/manager.c @@ -455,7 +455,7 @@ int manager_start_adapter(int id)  	if (default_adapter_id < 0)  		manager_set_default_adapter(id); -	return 0; +	return ret;  }  int manager_stop_adapter(int id) | 
