GAS: Send error response if no room for pending dialog context
authorJouni Malinen <j@w1.fi>
Sun, 25 May 2014 15:34:10 +0000 (18:34 +0300)
committerJouni Malinen <j@w1.fi>
Mon, 26 May 2014 14:21:43 +0000 (17:21 +0300)
Instead of silently dropping the response that requires fragmentation,
send an error response to the station to make it aware that no full
response will be available.

Signed-off-by: Jouni Malinen <j@w1.fi>
src/ap/gas_serv.c

index 49f6e87..b406880 100644 (file)
@@ -989,14 +989,17 @@ static void gas_serv_req_local_processing(struct hostapd_data *hapd,
                                   "for " MACSTR " (dialog token %u)",
                                   MAC2STR(sa), dialog_token);
                        wpabuf_free(buf);
-                       return;
+                       tx_buf = gas_anqp_build_initial_resp_buf(
+                               dialog_token, WLAN_STATUS_UNSPECIFIED_FAILURE,
+                               0, NULL);
+               } else {
+                       di->prot = prot;
+                       di->sd_resp = buf;
+                       di->sd_resp_pos = 0;
+                       tx_buf = gas_anqp_build_initial_resp_buf(
+                               dialog_token, WLAN_STATUS_SUCCESS,
+                               comeback_delay, NULL);
                }
-               di->prot = prot;
-               di->sd_resp = buf;
-               di->sd_resp_pos = 0;
-               tx_buf = gas_anqp_build_initial_resp_buf(
-                       dialog_token, WLAN_STATUS_SUCCESS, comeback_delay,
-                       NULL);
        } else {
                wpa_printf(MSG_DEBUG, "ANQP: Initial response (no comeback)");
                tx_buf = gas_anqp_build_initial_resp_buf(