From b21b221772b4772ae3e9a885effda233cf79b997 Mon Sep 17 00:00:00 2001 From: Patrik Flykt Date: Tue, 8 Jan 2013 11:32:51 +0200 Subject: [PATCH] gsupplicant: Return max SSIDs to scan given by wpa_supplicant Although it seems wpa_supplicant can handle 4 SSIDs in version 0.7.x and 16 starting with 0.8.x, in practise this does not work. Return the value reported without relying on wpa_supplicant internals to handle the situation. In order for hidden scans to work properly, the minimum value needs to be 1. --- gsupplicant/gsupplicant.h | 9 --------- gsupplicant/supplicant.c | 5 ++--- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/gsupplicant/gsupplicant.h b/gsupplicant/gsupplicant.h index 790cfed..1b1fce2 100644 --- a/gsupplicant/gsupplicant.h +++ b/gsupplicant/gsupplicant.h @@ -138,15 +138,6 @@ struct _GSupplicantSSID { typedef struct _GSupplicantSSID GSupplicantSSID; -/* - * Max number of SSIDs that can be scanned. - * In wpa_s 0.7x the limit is 4. - * In wps_s 0.8 or later it is 16. - * The value is only used if wpa_supplicant does not return any max limit - * for number of scannable SSIDs. - */ -#define WPAS_MAX_SCAN_SSIDS 4 - struct scan_ssid { unsigned char ssid[32]; uint8_t ssid_len; diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c index d9dfdbb..e298bb5 100644 --- a/gsupplicant/supplicant.c +++ b/gsupplicant/supplicant.c @@ -653,6 +653,8 @@ static void interface_capability(const char *key, DBusMessageIter *iter, dbus_int32_t max_scan_ssid; dbus_message_iter_get_basic(iter, &max_scan_ssid); + if (max_scan_ssid < 1) + max_scan_ssid = 1; interface->max_scan_ssids = max_scan_ssid; } else @@ -764,9 +766,6 @@ unsigned int g_supplicant_interface_get_max_scan_ssids( if (interface == NULL) return 0; - if (interface->max_scan_ssids == 0) - return WPAS_MAX_SCAN_SSIDS; - return interface->max_scan_ssids; } -- 2.7.4