Ignore auth/assoc timeout events in mesh configuration
authorJouni Malinen <j@w1.fi>
Sun, 30 Nov 2014 13:42:26 +0000 (15:42 +0200)
committerJouni Malinen <j@w1.fi>
Sun, 30 Nov 2014 13:53:11 +0000 (15:53 +0200)
It was possible for auth/assoc timeout/failure event from the driver to
result in unexpected processing during mesh group setup if that
operation was started before the previously started driver operation to
association/connect had completed. Since those events cannot happen in
mesh cases, ignore them to avoid issues due to this corner case.

For example, monitor_iface_unknown_sta followed by wpas_mesh_secure test
case resulted in failure without this change.

Signed-off-by: Jouni Malinen <j@w1.fi>
wpa_supplicant/events.c

index 06b09ef..5ef64e6 100644 (file)
@@ -3110,10 +3110,24 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
                }
                break;
        case EVENT_AUTH_TIMED_OUT:
+               /* It is possible to get this event from earlier connection */
+               if (wpa_s->current_ssid &&
+                   wpa_s->current_ssid->mode == WPAS_MODE_MESH) {
+                       wpa_dbg(wpa_s, MSG_DEBUG,
+                               "Ignore AUTH_TIMED_OUT in mesh configuration");
+                       break;
+               }
                if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME)
                        sme_event_auth_timed_out(wpa_s, data);
                break;
        case EVENT_ASSOC_TIMED_OUT:
+               /* It is possible to get this event from earlier connection */
+               if (wpa_s->current_ssid &&
+                   wpa_s->current_ssid->mode == WPAS_MODE_MESH) {
+                       wpa_dbg(wpa_s, MSG_DEBUG,
+                               "Ignore ASSOC_TIMED_OUT in mesh configuration");
+                       break;
+               }
                if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME)
                        sme_event_assoc_timed_out(wpa_s, data);
                break;