GAS: Do not reply to P2P SD query from generic GAS/ANQP server
This avoids an issue where a wpa_supplicant build with CONFIG_P2P=y and CONFIG_HS20=y ended up processing a P2P SD query twice when operating as a GO and sending out two replies. Only the P2P SD implementation should reply to P2P SD query in such a case. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
97752f7930
commit
a6b1215769
1 changed files with 24 additions and 0 deletions
|
@ -748,6 +748,7 @@ struct anqp_query_info {
|
||||||
size_t home_realm_query_len;
|
size_t home_realm_query_len;
|
||||||
const u8 *icon_name;
|
const u8 *icon_name;
|
||||||
size_t icon_name_len;
|
size_t icon_name_len;
|
||||||
|
int p2p_sd;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -919,6 +920,21 @@ static void rx_anqp_vendor_specific(struct hostapd_data *hapd,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_P2P
|
||||||
|
if (*pos == P2P_OUI_TYPE) {
|
||||||
|
/*
|
||||||
|
* This is for P2P SD and will be taken care of by the P2P
|
||||||
|
* implementation. This query needs to be ignored in the generic
|
||||||
|
* GAS server to avoid duplicated response.
|
||||||
|
*/
|
||||||
|
wpa_printf(MSG_DEBUG,
|
||||||
|
"ANQP: Ignore WFA vendor type %u (P2P SD) in generic GAS server",
|
||||||
|
*pos);
|
||||||
|
qi->p2p_sd = 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_P2P */
|
||||||
|
|
||||||
if (*pos != HS20_ANQP_OUI_TYPE) {
|
if (*pos != HS20_ANQP_OUI_TYPE) {
|
||||||
wpa_printf(MSG_DEBUG, "ANQP: Unsupported WFA vendor type %u",
|
wpa_printf(MSG_DEBUG, "ANQP: Unsupported WFA vendor type %u",
|
||||||
*pos);
|
*pos);
|
||||||
|
@ -969,6 +985,14 @@ static void gas_serv_req_local_processing(struct hostapd_data *hapd,
|
||||||
buf);
|
buf);
|
||||||
if (!buf)
|
if (!buf)
|
||||||
return;
|
return;
|
||||||
|
#ifdef CONFIG_P2P
|
||||||
|
if (wpabuf_len(buf) == 0 && qi->p2p_sd) {
|
||||||
|
wpa_printf(MSG_DEBUG,
|
||||||
|
"ANQP: Do not send response to P2P SD from generic GAS service (P2P SD implementation will process this)");
|
||||||
|
wpabuf_free(buf);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_P2P */
|
||||||
|
|
||||||
if (wpabuf_len(buf) > hapd->gas_frag_limit ||
|
if (wpabuf_len(buf) > hapd->gas_frag_limit ||
|
||||||
hapd->conf->gas_comeback_delay) {
|
hapd->conf->gas_comeback_delay) {
|
||||||
|
|
Loading…
Reference in a new issue