aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJouni Malinen <jouni@qca.qualcomm.com>2013-10-04 13:08:38 +0530
committerDeepthi Gowri <deepthi@codeaurora.org>2013-10-04 19:07:08 +0530
commit05e3dd4de12248a8f859e9202d6aa5c7e640bf28 (patch)
tree162d0b3e0c08e1ab6c4e9af9a3a3c613d4fdf3c3
parentbc0a8cab332310f20107556f3ede419fe0126660 (diff)
downloadandroid_external_wpa_supplicant_8-05e3dd4de12248a8f859e9202d6aa5c7e640bf28.tar.gz
android_external_wpa_supplicant_8-05e3dd4de12248a8f859e9202d6aa5c7e640bf28.tar.bz2
android_external_wpa_supplicant_8-05e3dd4de12248a8f859e9202d6aa5c7e640bf28.zip
P2P: Cancel group formation timeout on client connection
It was possiblle for the group formation timeout to be left running even after the P2P Client connected to the group if the WPS provisioning step was not completed cleanly (e.g., due to WSC_Done not getting received from the client). There is no need to remove the group in such case due to the initial group formation timeout, so work around this by removing that timeout on data connection. CRs-Fixed: 538026 Git-commit: eab2b50dc83e1d14dcb573dfc9b10fc6a9cb1cdd Git-repo: git://w1.fi/srv/git/hostap.git Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com> Change-Id: I15e65a8e2436db5c408d5960bff6ba7af16f62c1
-rw-r--r--wpa_supplicant/p2p_supplicant.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c
index 7216c3aa..ab164f64 100644
--- a/wpa_supplicant/p2p_supplicant.c
+++ b/wpa_supplicant/p2p_supplicant.c
@@ -5832,6 +5832,16 @@ struct wpa_ssid * wpas_p2p_get_persistent(struct wpa_supplicant *wpa_s,
void wpas_p2p_notify_ap_sta_authorized(struct wpa_supplicant *wpa_s,
const u8 *addr)
{
+ if (eloop_cancel_timeout(wpas_p2p_group_formation_timeout,
+ wpa_s->parent, NULL) > 0) {
+ /*
+ * This can happen if WPS provisioning step is not terminated
+ * cleanly (e.g., P2P Client does not send WSC_Done). Since the
+ * peer was able to connect, there is no need to time out group
+ * formation after this, though.
+ */
+ wpa_printf(MSG_DEBUG, "P2P: Workaround - cancelled P2P group formation timeout on data connection");
+ }
wpa_s->global->p2p_go_wait_client.sec = 0;
if (addr == NULL)
return;