netdev: better handle associate timeouts with auth_protos

Any auth proto which did not implement the assoc_timeout handler
could end up getting 'stuck' forever if there was an associate
timeout. This is because in the event of an associate timeout IWD
only sets a few flags and relies on the connect event to actually
handle the failure. The problem is a connect event never comes
if the failure was a timeout.

To fix this we can explicitly fail the connection if the auth
proto has not implemented assoc_timeout or if it returns false.
This commit is contained in:
James Prestwood 2021-03-29 13:43:49 -07:00 committed by Denis Kenzior
parent 28a7dd7fba
commit 90485cb2ee
1 changed files with 9 additions and 1 deletions

View File

@ -2280,7 +2280,15 @@ static void netdev_associate_event(struct l_genl_msg *msg,
if (auth_proto_assoc_timeout(netdev->ap))
return;
goto assoc_failed;
/*
* There will be no connect event when Associate times
* out. The failed connection must be explicitly
* initiated here.
*/
netdev_connect_failed(netdev,
NETDEV_RESULT_ASSOCIATION_FAILED,
status_code);
return;
case NL80211_ATTR_FRAME:
frame = data;