diff options
author | Dan Williams <dcbw@redhat.com> | 2014-03-05 10:16:39 -0600 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2014-03-12 08:42:55 -0500 |
commit | 23a5ae2f4490c5e64787af4fcab7a4bc63cfc852 (patch) | |
tree | 7dcecc367eae951bdd0d495f363a193ae7494415 /src/nm-manager.c | |
parent | 787455bae149a1f9fd7152aab290be6c7a4d39f3 (diff) | |
download | NetworkManager-23a5ae2f4490c5e64787af4fcab7a4bc63cfc852.tar.gz |
wifi: bypass available check for hidden APs during activation (rh #1069844)dcbw/hidden-ssid
Because not all clients set the 'hidden' property in a connection for
hidden/non-SSID-broadcasting networks, they may not show up in
the device's available-connections property. After the
PendingActivation object removal, all activations require the
connection to be in available-connections, and thus hidden SSID
networks could not be activated.
Unfortunately check_connection_available() is used both during
activation and to populate the available-connections array, but we
only want to special-case activation paths, and still ensure that
SSIDs not found in the scan list are not in available-connections.
To make it clear this is a WiFi only hack, and that we should
remove it at some point in the future, create another class method
specifically for hidden WiFi and use that in activation paths to
special-case hidden WiFi connection activation.
Diffstat (limited to 'src/nm-manager.c')
-rw-r--r-- | src/nm-manager.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/nm-manager.c b/src/nm-manager.c index 26e65d84fe..1466a429f0 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -2501,7 +2501,7 @@ ensure_master_active_connection (NMManager *self, if (!is_compatible_with_slave (candidate, connection)) continue; - if (nm_device_connection_is_available (master_device, candidate)) { + if (nm_device_connection_is_available (master_device, candidate, TRUE)) { master_ac = nm_manager_activate_connection (self, candidate, NULL, @@ -2542,7 +2542,7 @@ ensure_master_active_connection (NMManager *self, continue; } - if (!nm_device_connection_is_available (candidate, master_connection)) + if (!nm_device_connection_is_available (candidate, master_connection, TRUE)) continue; found_device = TRUE; @@ -2658,7 +2658,7 @@ _internal_activate_device (NMManager *self, NMActiveConnection *active, GError * } /* Final connection must be available on device */ - if (!nm_device_connection_is_available (device, connection)) { + if (!nm_device_connection_is_available (device, connection, TRUE)) { g_set_error (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_UNKNOWN_CONNECTION, "Connection '%s' is not available on the device %s at this time.", nm_connection_get_id (connection), nm_device_get_iface (device)); |