GAS: Fix additional comeback delay with status code 95

The special case of non-zero status code used in a GAS Comeback Response
frame to indicate that additional delay is needed before the response is
available was not working properly. This case needs to allow the status
code check to be bypassed for the comeback case prior to having received
any response data.

Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
Jouni Malinen 2014-03-01 16:51:46 +02:00
parent 07d462c7b7
commit 2af4d87fc3
2 changed files with 5 additions and 1 deletions

View file

@ -161,6 +161,7 @@
#define WLAN_STATUS_ANTI_CLOGGING_TOKEN_REQ 76 #define WLAN_STATUS_ANTI_CLOGGING_TOKEN_REQ 76
#define WLAN_STATUS_FINITE_CYCLIC_GROUP_NOT_SUPPORTED 77 #define WLAN_STATUS_FINITE_CYCLIC_GROUP_NOT_SUPPORTED 77
#define WLAN_STATUS_TRANSMISSION_FAILURE 79 #define WLAN_STATUS_TRANSMISSION_FAILURE 79
#define WLAN_STATUS_QUERY_RESP_OUTSTANDING 95
#define WLAN_STATUS_ASSOC_DENIED_NO_VHT 104 #define WLAN_STATUS_ASSOC_DENIED_NO_VHT 104
/* Reason codes (IEEE 802.11-2007, 7.3.1.7, Table 7-22) */ /* Reason codes (IEEE 802.11-2007, 7.3.1.7, Table 7-22) */

View file

@ -487,7 +487,10 @@ int gas_query_rx(struct gas_query *gas, const u8 *da, const u8 *sa,
query->status_code = WPA_GET_LE16(pos); query->status_code = WPA_GET_LE16(pos);
pos += 2; pos += 2;
if (query->status_code != WLAN_STATUS_SUCCESS) { if (query->status_code == WLAN_STATUS_QUERY_RESP_OUTSTANDING &&
action == WLAN_PA_GAS_COMEBACK_RESP) {
wpa_printf(MSG_DEBUG, "GAS: Allow non-zero status for outstanding comeback response");
} else if (query->status_code != WLAN_STATUS_SUCCESS) {
wpa_printf(MSG_DEBUG, "GAS: Query to " MACSTR " dialog token " wpa_printf(MSG_DEBUG, "GAS: Query to " MACSTR " dialog token "
"%u failed - status code %u", "%u failed - status code %u",
MAC2STR(sa), dialog_token, query->status_code); MAC2STR(sa), dialog_token, query->status_code);