{
GSList *list;
+ if (driver == NULL)
+ return;
+
DBG("Unregistering driver %p name %s", driver, driver->name);
for (list = driver_list; list; list = list->next) {
DBusMessage *message;
- if (driver == list->data)
+ if (driver != list->data)
continue;
+ DBG("Sending release to %s path %s iface %s", agent_sender,
+ agent_path, driver->interface);
+
message = dbus_message_new_method_call(agent_sender, agent_path,
driver->interface, "Release");
if (message != NULL) {
}
agent_free();
+
+ /*
+ * ATM agent_free() unsets the agent_sender and agent_path
+ * variables so we can unregister only once.
+ * This needs proper fix later.
+ */
+ break;
}
driver_list = g_slist_remove(driver_list, driver);
}
+static void release_all_agents(void)
+{
+ connman_agent_driver_unregister(get_driver());
+}
+
int __connman_agent_init(void)
{
DBG("");
if (agent_watch > 0)
g_dbus_remove_watch(connection, agent_watch);
+ release_all_agents();
+
dbus_connection_unref(connection);
connection = NULL;
}