agent: call back even if agent disconnects

It was found that if the user cancels/disconnects the agent prior to
entering credentials, IWD would get stuck and could no longer accept
any connect calls with the error "Operation already in progress".
For example exiting iwctl in the Password prompt would cause this:

iwctl
$ station wlan0 connect myssid
$ Password: <Ctrl-C>

This was due to the agent never calling the network callback in the
case of an agent disconnect. Network would wait indefinitely for the
credentials, and disallow any future connect attempts.

To fix this agent_finalize_pending can be called in agent_disconnect
with a NULL reply which behaves the same as if there was an
internal timeout and ultimately allows network to fail the connection
This commit is contained in:
James Prestwood 2021-04-09 09:37:14 -07:00 committed by Denis Kenzior
parent 379ec4b952
commit d04ab5ad96
1 changed files with 3 additions and 0 deletions

View File

@ -525,6 +525,9 @@ static void agent_disconnect(struct l_dbus *dbus, void *user_data)
l_debug("agent %s disconnected", agent->owner);
if (agent->pending_id)
agent_finalize_pending(agent, NULL);
l_queue_remove(agents, agent);
l_idle_oneshot(agent_free, agent, NULL);