summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TODO32
-rw-r--r--src/nm-device-wifi.c10
2 files changed, 10 insertions, 32 deletions
diff --git a/TODO b/TODO
index a2f7ee99f2..cdea070d00 100644
--- a/TODO
+++ b/TODO
@@ -53,38 +53,6 @@ provide Ad-Hoc connection sharing support for those devices and switch between
Ad-Hoc and AP mode depending on device capabilities.
-* Reconnect to WiFi Networks Only If They Succeeded Once
-
-Currently, NetworkManager will attempt to connect to a previously attempted
-WiFi network even if that network was never successfully connected to. This
-causes confusion because sometimes users will randomly try various WiFi networks
-hoping to find an open AP, and then wonder why NM tries to reconnect to any of
-those APs later when none of them worked originally due to AP-side MAC filtering
-or other failures. What should happen is that NetworkManager should set a flag
-on a connection when that connection is successfully connected at least once,
-and only autoconnect the wifi network if that flag is present *and* the
-NMSettingConnection's 'autoconnect' property is TRUE.
-
-This is a bit tricky because we want to consider all connections that don't have
-this flag as having succeeded so that we don't break users' existing connections,
-while holding all newly created connections to this policy. This flag should
-be determined and set for all connections, even if we only use it to determine
-WiFi behavior for now.
-
-This flag should be a new gboolean property on the NMSettingConnection object
-called "connect-success", with a default value of TRUE. It should default to
-TRUE to ensure that existing connections are assumed to have connected
-successfully in the past. New connections created via the AddConnection and
-AddAndActivateConnection D-Bus method calls should have the 'connect-success'
-property explicitly set to FALSE. Then, in nm-device.c's device_state_changed()
-function where the NM_DEVICE_STATE_ACTIVATED state is handled, the
-'connect-success' property should be set to TRUE.
-
-For WiFi then, in nm-device-wifi.c's get_best_auto_connection() method, the
-'connect-success' property should be checked and if it is FALSE, the connection
-is not considered for auto-activation.
-
-
* Implement NM_DEVICE_STATE_DISCONNECTING
To allow for "pre-down" scenarios, this state should be implemented before a
diff --git a/src/nm-device-wifi.c b/src/nm-device-wifi.c
index 6f0cf57c48..6119c9dbf4 100644
--- a/src/nm-device-wifi.c
+++ b/src/nm-device-wifi.c
@@ -1357,6 +1357,7 @@ real_get_best_auto_connection (NMDevice *dev,
gboolean mac_blacklist_found = FALSE;
NMSettingIP4Config *s_ip4;
const char *method = NULL;
+ guint64 timestamp = 0;
s_con = nm_connection_get_setting_connection (connection);
if (s_con == NULL)
@@ -1366,6 +1367,15 @@ real_get_best_auto_connection (NMDevice *dev,
if (!nm_setting_connection_get_autoconnect (s_con))
continue;
+ /* Don't autoconnect to networks that have been tried at least once
+ * but haven't been successful, since these are often accidental choices
+ * from the menu and the user may not know the password.
+ */
+ if (nm_settings_connection_get_timestamp (NM_SETTINGS_CONNECTION (connection), &timestamp)) {
+ if (timestamp == 0)
+ continue;
+ }
+
s_wireless = nm_connection_get_setting_wireless (connection);
if (!s_wireless)
continue;