diff options
author | Luiz Augusto von Dentz <luiz.dentz@openbossa.org> | 2008-09-11 14:21:09 -0300 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.dentz@openbossa.org> | 2008-09-11 14:21:09 -0300 |
commit | 2f9fbeeb5931cda983aa72ed9a53b1f22d0aa85d (patch) | |
tree | 6d58eb569ea9a4ccff60f77b3791e06d55058780 /src/device.c | |
parent | 78eadf19bbee1f52b738d39133296186b3e944fe (diff) |
Fix problem that occurs when a device is removed but agent requests are not cancelled.
Diffstat (limited to 'src/device.c')
-rw-r--r-- | src/device.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/device.c b/src/device.c index 52fae4ed..5c8208de 100644 --- a/src/device.c +++ b/src/device.c @@ -111,10 +111,15 @@ static GSList *device_drivers = NULL; static void device_free(gpointer user_data) { struct btd_device *device = user_data; + struct btd_adapter *adapter = device->adapter; + struct agent *agent = adapter_get_agent(adapter); if (device->agent) agent_destroy(device->agent, FALSE); + if (agent && agent_is_busy(agent, device)) + agent_cancel(agent); + g_slist_foreach(device->uuids, (GFunc) g_free, NULL); g_slist_free(device->uuids); |