diff options
Diffstat (limited to 'src/ap/ieee802_1x.c')
-rw-r--r-- | src/ap/ieee802_1x.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/ap/ieee802_1x.c b/src/ap/ieee802_1x.c index dd0df1d..037bd0c 100644 --- a/src/ap/ieee802_1x.c +++ b/src/ap/ieee802_1x.c @@ -727,6 +727,17 @@ void ieee802_1x_receive(struct hostapd_data *hapd, const u8 *sa, const u8 *buf, !(hapd->iface->drv_flags & WPA_DRIVER_FLAGS_WIRED))) { wpa_printf(MSG_DEBUG, "IEEE 802.1X data frame from not " "associated/Pre-authenticating STA"); + if (sta && (sta->flags & WLAN_STA_ASSOC_REQ_OK)) { + wpa_printf(MSG_DEBUG, "Saving EAPOL for later use"); + wpabuf_free(hapd->pending_eapol_rx); + hapd->pending_eapol_rx = wpabuf_alloc_copy(buf, len); + if (hapd->pending_eapol_rx) { + os_get_time(&hapd->pending_eapol_rx_time); + os_memcpy(hapd->pending_eapol_rx_src, sa, + ETH_ALEN); + } + } + return; } |