summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/supplicant-manager/nm-supplicant-interface.c17
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,