diff options
author | Dan Williams <dcbw@redhat.com> | 2013-09-20 15:58:18 -0500 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2014-01-31 14:36:10 -0600 |
commit | 7e7dbd272c9e3351e6d0a8e56a44fd8c4e0344d1 (patch) | |
tree | 6c13a3995882d020542d0a017a5a4d5cd68d1bda | |
parent | 718914b32cda2a2c676cff25c9810629cf17fc81 (diff) | |
download | NetworkManager-dcbw/wifi-awesome.tar.gz |
wifi: don't allow broadcast scans to trigger roaming decisionsdcbw/wifi-awesome
The supplicant does that just fine by itself with optimized background
scanning. NM's requested broadcast scans should not trigger a roaming
decision because they are only meant to update location information
and UI.
-rw-r--r-- | src/supplicant-manager/nm-supplicant-interface.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/supplicant-manager/nm-supplicant-interface.c b/src/supplicant-manager/nm-supplicant-interface.c index 789039c7a9..8448173485 100644 --- a/src/supplicant-manager/nm-supplicant-interface.c +++ b/src/supplicant-manager/nm-supplicant-interface.c @@ -1204,6 +1204,16 @@ string_to_gvalue (const char *str) } static GValue * +bool_to_gvalue (gboolean b) +{ + GValue *val = g_slice_new0 (GValue); + + g_value_init (val, G_TYPE_BOOLEAN); + g_value_set_boolean (val, b); + return val; +} + +static GValue * byte_array_array_to_gvalue (const GPtrArray *array) { GValue *val = g_slice_new0 (GValue); @@ -1230,6 +1240,13 @@ nm_supplicant_interface_request_scan (NMSupplicantInterface *self, const GPtrArr if (ssids) g_hash_table_insert (hash, "SSIDs", byte_array_array_to_gvalue (ssids)); + /* If connected, we don't want an NM-triggered broadcast scan to trigger + * a roaming attempt; let background scanning in the supplicant make that + * decision instead. + */ + if (priv->state >= NM_SUPPLICANT_INTERFACE_STATE_AUTHENTICATING) + g_hash_table_insert (hash, "AllowRoam", bool_to_gvalue (FALSE)); + call = dbus_g_proxy_begin_call (priv->iface_proxy, "Scan", scan_request_cb, self, |