aboutsummaryrefslogtreecommitdiffstats
path: root/package/madwifi/patches/391-vap_auth.patch
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2009-01-25 00:37:41 +0000
committerFelix Fietkau <nbd@openwrt.org>2009-01-25 00:37:41 +0000
commit87db54da68aa2614122a0f2f2d4c79722dad2bb9 (patch)
tree022b7bd5bc73da3bce22c057ba58b97b4596e5c1 /package/madwifi/patches/391-vap_auth.patch
parent28abf79c44dc8a464d9573a9dc0c657ad5a35b60 (diff)
downloadupstream-87db54da68aa2614122a0f2f2d4c79722dad2bb9.tar.gz
upstream-87db54da68aa2614122a0f2f2d4c79722dad2bb9.tar.bz2
upstream-87db54da68aa2614122a0f2f2d4c79722dad2bb9.zip
madwifi: fix the long standing bug that is triggered by nodes getting a timeout on one vap, then moving to another
SVN-Revision: 14171
Diffstat (limited to 'package/madwifi/patches/391-vap_auth.patch')
-rw-r--r--package/madwifi/patches/391-vap_auth.patch29
1 files changed, 29 insertions, 0 deletions
diff --git a/package/madwifi/patches/391-vap_auth.patch b/package/madwifi/patches/391-vap_auth.patch
new file mode 100644
index 0000000000..acee271c33
--- /dev/null
+++ b/package/madwifi/patches/391-vap_auth.patch
@@ -0,0 +1,29 @@
+--- a/net80211/ieee80211_input.c
++++ b/net80211/ieee80211_input.c
+@@ -1374,7 +1386,7 @@ ieee80211_auth_open(struct ieee80211_nod
+ vap->iv_stats.is_rx_bad_auth++; /* XXX maybe a unique error? */
+ if (vap->iv_opmode == IEEE80211_M_HOSTAP) {
+ if (ni == vap->iv_bss) {
+- ni = ieee80211_dup_bss(vap, wh->i_addr2, 0);
++ ni = ieee80211_dup_bss(vap, wh->i_addr2, 1);
+ if (ni == NULL)
+ return;
+ tmpnode = 1;
+@@ -1762,6 +1774,8 @@ ieee80211_ssid_mismatch(struct ieee80211
+ }
+
+ #define IEEE80211_VERIFY_SSID(_ni, _ssid) do { \
++ if ((_ni)->ni_esslen == 0) \
++ return; \
+ if ((_ssid)[1] != 0 && \
+ ((_ssid)[1] != (_ni)->ni_esslen || \
+ memcmp((_ssid) + 2, (_ni)->ni_essid, (_ssid)[1]) != 0)) { \
+@@ -1776,6 +1790,8 @@ ieee80211_ssid_mismatch(struct ieee80211
+ } while (0)
+ #else /* !IEEE80211_DEBUG */
+ #define IEEE80211_VERIFY_SSID(_ni, _ssid) do { \
++ if ((_ni)->ni_esslen == 0) \
++ return; \
+ if ((_ssid)[1] != 0 && \
+ ((_ssid)[1] != (_ni)->ni_esslen || \
+ memcmp((_ssid) + 2, (_ni)->ni_essid, (_ssid)[1]) != 0)) { \