diff --git a/src/network.c b/src/network.c index fcfad036..5f68c26d 100644 --- a/src/network.c +++ b/src/network.c @@ -340,6 +340,18 @@ int network_autoconnect(struct network *network, struct scan_bss *bss) return 0; } +void network_connect_failed(struct network *network) +{ + /* + * Connection failed, if PSK try asking for the passphrase + * once more + */ + if (network->security == SECURITY_PSK) { + network->update_psk = false; + network->ask_psk = true; + } +} + static struct scan_bss *network_select_bss(struct wiphy *wiphy, struct network *network) { diff --git a/src/network.h b/src/network.h index 7455b7c3..1fd5ec87 100644 --- a/src/network.h +++ b/src/network.h @@ -58,7 +58,9 @@ struct l_settings *network_get_settings(struct network *network); bool network_settings_load(struct network *network); void network_settings_close(struct network *network); void network_sync_psk(struct network *network); + int network_autoconnect(struct network *network, struct scan_bss *bss); +void network_connect_failed(struct network *network); bool network_register(struct network *network, const char *path);