diff options
-rw-r--r-- | gsupplicant/supplicant.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c index 861936e6..0e4f932b 100644 --- a/gsupplicant/supplicant.c +++ b/gsupplicant/supplicant.c @@ -2007,6 +2007,21 @@ int g_supplicant_interface_scan(GSupplicantInterface *interface, if (interface->scanning == TRUE) return -EALREADY; + switch (interface->state) { + case G_SUPPLICANT_STATE_AUTHENTICATING: + case G_SUPPLICANT_STATE_ASSOCIATING: + case G_SUPPLICANT_STATE_ASSOCIATED: + case G_SUPPLICANT_STATE_4WAY_HANDSHAKE: + case G_SUPPLICANT_STATE_GROUP_HANDSHAKE: + return -EBUSY; + case G_SUPPLICANT_STATE_UNKNOWN: + case G_SUPPLICANT_STATE_DISCONNECTED: + case G_SUPPLICANT_STATE_INACTIVE: + case G_SUPPLICANT_STATE_SCANNING: + case G_SUPPLICANT_STATE_COMPLETED: + break; + } + data = dbus_malloc0(sizeof(*data)); if (data == NULL) return -ENOMEM; |