diff options
Diffstat (limited to 'hcid/dbus-hci.c')
| -rw-r--r-- | hcid/dbus-hci.c | 15 | 
1 files changed, 11 insertions, 4 deletions
diff --git a/hcid/dbus-hci.c b/hcid/dbus-hci.c index 954a892b..0cc3af6a 100644 --- a/hcid/dbus-hci.c +++ b/hcid/dbus-hci.c @@ -638,8 +638,10 @@ static void create_stored_device_from_profiles(char *key, char *value,  	struct device *device;  	device = device_create(connection, adapter, key, uuids); -	if (device) +	if (device) { +		device->temporary = FALSE;  		adapter->devices = g_slist_append(adapter->devices, device); +	}  }  static void create_stored_device_from_linkkeys(char *key, char *value, @@ -653,8 +655,10 @@ static void create_stored_device_from_linkkeys(char *key, char *value,  		return;  	device = device_create(connection, adapter, key, NULL); -	if (device) +	if (device) { +		device->temporary = FALSE;  		adapter->devices = g_slist_append(adapter->devices, device); +	}  }  static void register_devices(bdaddr_t *src, struct adapter *adapter) @@ -952,14 +956,14 @@ static void passkey_cb(struct agent *agent, DBusError *err, const char *passkey,  	str2ba(device->address, &dba);  	if (err) { -		if (device->created) +		if (device->temporary)  			device_remove(connection, device);  		hci_send_cmd(dev, OGF_LINK_CTL,  				OCF_PIN_CODE_NEG_REPLY, 6, &dba);  		goto done;  	} -	device->created = FALSE; +	device->temporary = FALSE;  	len = strlen(passkey); @@ -1087,6 +1091,7 @@ void hcid_dbus_bonding_process_complete(bdaddr_t *local, bdaddr_t *peer,  				device = adapter_get_device(connection, adapter, paddr);  				if (device) { +					device->temporary = FALSE;  					dbus_connection_emit_property_changed(connection,  						device->path, DEVICE_INTERFACE,  						"Paired", DBUS_TYPE_BOOLEAN, &paired); @@ -2037,6 +2042,8 @@ void hcid_dbus_disconn_complete(bdaddr_t *local, uint8_t status,  						device->path, DEVICE_INTERFACE,  						"Connected", DBUS_TYPE_BOOLEAN,  						&connected); +			if (device->temporary) +				device_remove(connection, device);  		}  	}  | 
