P2P: Fix infinite loop on interface selection for Action frame TX
authorJouni Malinen <jouni.malinen@atheros.com>
Wed, 23 Jun 2010 03:08:14 +0000 (20:08 -0700)
committerJouni Malinen <j@w1.fi>
Thu, 9 Sep 2010 14:17:18 +0000 (07:17 -0700)
When the first wpa_supplicant interface is not the correct one for
transmitting an Action frame (e.g., P2P Presence Request frame
uses a group interface), the code got stuck in an infinite busy
loop. Fix the iteration to go through the interfaces properly.

wpa_supplicant/p2p_supplicant.c

index 16864c7..a89faae 100644 (file)
@@ -497,7 +497,7 @@ static void wpas_send_action_cb(void *eloop_ctx, void *timeout_ctx)
         * driver uses a separate interface for that purpose. However, some
         * Action frames are actually sent within a P2P Group and when that is
         * the case, we need to follow power saving (e.g., GO buffering the
-        * frame for a client in PS mode or a client following the adverised
+        * frame for a client in PS mode or a client following the advertised
         * NoA from its GO). To make that easier for the driver, select the
         * correct group interface here.
         */
@@ -512,6 +512,7 @@ static void wpas_send_action_cb(void *eloop_ctx, void *timeout_ctx)
                        if (os_memcmp(wpa_s->pending_action_src,
                                      iface->own_addr, ETH_ALEN) == 0)
                                break;
+                       iface = iface->next;
                }
                if (iface) {
                        wpa_printf(MSG_DEBUG, "P2P: Use group interface %s "