diff options
author | Andrew Zaborowski <andrew.zaborowski@intel.com> | 2020-10-11 00:42:20 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2020-10-19 18:49:30 +0200 |
commit | c92ad05cee6ed8f1edb17d0cc4a6dd2c7d8a2f46 (patch) | |
tree | a2dacd6946286b5604b9de707be38b5f1db470a7 /src | |
parent | a6ece1557cc2ab7aaeb0e8cd8674bcffee38a39b (diff) |
iwd: Avoid ConnectHiddenNetwork() if network is visible
If the target hidden network is already recorded by IWD with its SSID
during a previous active scan, use the Network.Connect() API instead of
Station.ConnectHiddenNetwork() which would fail in IWD version up to
1.9. This is a rare corner case scenario though.
Also drop the !nm_wifi_ap_get_supplicant_path(ap) check, I'm not
sure when if ever that condition can be true, more so now that we're
checking nm_wifi_ap_get_fake(ap) before that.
Diffstat (limited to 'src')
-rw-r--r-- | src/devices/wifi/nm-device-iwd.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/devices/wifi/nm-device-iwd.c b/src/devices/wifi/nm-device-iwd.c index 89cfb2cd28..15c1191701 100644 --- a/src/devices/wifi/nm-device-iwd.c +++ b/src/devices/wifi/nm-device-iwd.c @@ -1862,10 +1862,17 @@ act_stage2_config(NMDevice *device, NMDeviceStateReason *out_failure_reason) priv->secrets_failed = FALSE; - if (!is_connection_known_network(connection) - && nm_setting_wireless_get_hidden(s_wireless)) { + if (nm_wifi_ap_get_fake(ap)) { gs_free char *ssid_str = NULL; + if (!nm_setting_wireless_get_hidden(s_wireless)) { + _LOGW(LOGD_DEVICE | LOGD_WIFI, + "Activation: (wifi) target network not known to IWD but is not " + "marked hidden"); + NM_SET_OUT(out_failure_reason, NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED); + goto out_fail; + } + /* Use Station.ConnectHiddenNetwork method instead of Network proxy. */ ssid_str = _nm_utils_ssid_to_utf8(nm_setting_wireless_get_ssid(s_wireless)); g_dbus_proxy_call(priv->dbus_station_proxy, @@ -1879,14 +1886,6 @@ act_stage2_config(NMDevice *device, NMDeviceStateReason *out_failure_reason) return NM_ACT_STAGE_RETURN_POSTPONE; } - if (!nm_wifi_ap_get_supplicant_path(ap)) { - _LOGW(LOGD_DEVICE | LOGD_WIFI, - "Activation: (wifi) network is provisioned but dbus supplicant path for AP " - "unknown"); - NM_SET_OUT(out_failure_reason, NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED); - goto out_fail; - } - network_proxy = nm_iwd_manager_get_dbus_interface( nm_iwd_manager_get(), nm_ref_string_get_str(nm_wifi_ap_get_supplicant_path(ap)), |