P2P: Do not fail p2p_group_remove just based on current_ssid

The wpa_s->current_ssid pointer may get cleared, e.g., when
disconnected. Commit 30ee769235 made
wpas_p2p_group_delete() exit early before removing a P2P interface in
this type of case. That can cause number of issues from p2p_group_remove
command failing to busy loop when terminating wpa_supplicant if there is
a P2P group interface in client mode and that interface happens to be in
disconnected state. Fix these issues by allowing wpas_p2p_group_delete()
remove the P2P group interface regardless of whether wpa_s->currnt_ssid
is set.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
Jouni Malinen 2012-08-31 21:35:32 +03:00 committed by Jouni Malinen
parent 4d32c0c44d
commit 6f1ca696c7

View file

@ -262,7 +262,9 @@ static int wpas_p2p_group_delete(struct wpa_supplicant *wpa_s,
break; break;
ssid = ssid->next; ssid = ssid->next;
} }
if (ssid == NULL) { if (ssid == NULL &&
wpa_s->p2p_group_interface == NOT_P2P_GROUP_INTERFACE)
{
wpa_printf(MSG_ERROR, "P2P: P2P group interface " wpa_printf(MSG_ERROR, "P2P: P2P group interface "
"not found"); "not found");
return -1; return -1;