From 2c0efd9e49b15da163cee659409eee85390620c3 Mon Sep 17 00:00:00 2001 From: Krishna Vamsi Date: Wed, 4 Feb 2015 17:17:23 +0530 Subject: [PATCH] P2P: Fix stopping on search after SD callback If p2p_find_timeout triggers after starting SD but before getting TX status for send action, unwanted search could get triggered again when TX status arrives though p2p_find_timeout moved the state to P2P_IDLE by then. p2p_continue_find() would then move the state to P2P_SEARCH again. Do not trigger the find operation from this context if state is P2P_IDLE to avoid this. Signed-off-by: Jouni Malinen --- src/p2p/p2p.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/p2p/p2p.c b/src/p2p/p2p.c index 2fcef6bc7..f050c4bae 100644 --- a/src/p2p/p2p.c +++ b/src/p2p/p2p.c @@ -3171,13 +3171,15 @@ static void p2p_sd_cb(struct p2p_data *p2p, int success) if (p2p->sd_peer) p2p->cfg->send_action_done(p2p->cfg->cb_ctx); p2p->sd_peer = NULL; - p2p_continue_find(p2p); + if (p2p->state != P2P_IDLE) + p2p_continue_find(p2p); return; } if (p2p->sd_peer == NULL) { p2p_dbg(p2p, "No SD peer entry known"); - p2p_continue_find(p2p); + if (p2p->state != P2P_IDLE) + p2p_continue_find(p2p); return; }