diff --git a/src/device.c b/src/device.c
index a9cf23f..fbfbe10 100644
--- a/src/device.c
+++ b/src/device.c
GSList *pending; /* Pending profiles */
GSList *watches; /* List of disconnect_data */
gboolean temporary;
- struct agent *agent;
guint disconn_timer;
guint discov_timer;
struct browse_req *browse; /* service discover request */
DBG("Removing device %s", device->path);
- if (device->agent)
- agent_unref(device->agent);
-
if (device->bonding) {
uint8_t status;
{
struct att_callbacks *attcb = user_data;
struct btd_device *device = attcb->user_data;
+ uint8_t io_cap;
GAttrib *attrib;
int err;
if (!device->bonding)
goto done;
+ if (device->bonding->agent)
+ io_cap = agent_get_io_capability(device->bonding->agent);
+ else
+ io_cap = IO_CAPABILITY_NOINPUTNOOUTPUT;
+
/* this is a LE device during pairing */
- err = adapter_create_bonding(device->adapter,
- &device->bdaddr, device->bdaddr_type,
- agent_get_io_capability(device->agent));
+ err = adapter_create_bonding(device->adapter, &device->bdaddr,
+ device->bdaddr_type, io_cap);
if (err < 0) {
DBusMessage *reply = btd_error_failed(device->bonding->msg,
strerror(-err));