P2P: Fix p2p_group_idle in no-group-interface P2P client case

Commit 30ee769235 started skipping P2P
group removal if wpa_s->current_ssid is not set and commit
0d30cc240f started clearing
wpa_s->current_ssid on disconnection. This combination broke
p2p_group_idle timeout on P2P client interface in a case where no
separate P2P group interface is used and when the disconnection is
triggered by something else than an explicit indication of GO
terminating the group.

Fix this by relaxing network block matching rules when figuring out
whether any of the configured network blocks could be in P2P use. The
p2p_group flag alone should be enough for this since temporary P2P group
network blocks are removed once the P2P group is terminated.

Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
Jouni Malinen 2012-09-23 20:28:03 +03:00
parent 8c981d179b
commit 0c802384a7

View file

@ -255,13 +255,12 @@ static int wpas_p2p_group_delete(struct wpa_supplicant *wpa_s,
if (ssid == NULL) { if (ssid == NULL) {
/* /*
* The current SSID was not known, but there may still be a * The current SSID was not known, but there may still be a
* pending P2P group interface waiting for provisioning. * pending P2P group interface waiting for provisioning or a
* P2P group that is trying to reconnect.
*/ */
ssid = wpa_s->conf->ssid; ssid = wpa_s->conf->ssid;
while (ssid) { while (ssid) {
if (ssid->p2p_group && if (ssid->p2p_group)
(ssid->mode == WPAS_MODE_P2P_GROUP_FORMATION ||
(ssid->key_mgmt & WPA_KEY_MGMT_WPS)))
break; break;
ssid = ssid->next; ssid = ssid->next;
} }