From 7139cf4a4f1fecfd03d0daff9bb33adb80cc3530 Mon Sep 17 00:00:00 2001 From: Constantin Musca Date: Mon, 22 Sep 2014 15:00:37 +0300 Subject: [PATCH] P2P: Decrement sd_pending_bcast_queries when sd returns success The sd_pending_bcast_queries variable should be decremented only in case of success. This way, the supplicant can retry if a service discovery request fails. Signed-off-by: Constantin Musca --- src/p2p/p2p.c | 13 +++++++++++++ src/p2p/p2p_sd.c | 10 ---------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/p2p/p2p.c b/src/p2p/p2p.c index 55b0410a1..f0eba1a1b 100644 --- a/src/p2p/p2p.c +++ b/src/p2p/p2p.c @@ -2788,6 +2788,19 @@ static void p2p_sd_cb(struct p2p_data *p2p, int success) return; } + if (p2p->sd_query->for_all_peers) { + /* Update the pending broadcast SD query count for this device + */ + p2p->sd_peer->sd_pending_bcast_queries--; + + /* + * If there are no pending broadcast queries for this device, + * mark it as done (-1). + */ + if (p2p->sd_peer->sd_pending_bcast_queries == 0) + p2p->sd_peer->sd_pending_bcast_queries = -1; + } + /* Wait for response from the peer */ p2p_set_state(p2p, P2P_SD_DURING_FIND); p2p_set_timeout(p2p, 0, 200000); diff --git a/src/p2p/p2p_sd.c b/src/p2p/p2p_sd.c index 6235b1de4..13119c200 100644 --- a/src/p2p/p2p_sd.c +++ b/src/p2p/p2p_sd.c @@ -301,16 +301,6 @@ int p2p_start_sd(struct p2p_data *p2p, struct p2p_device *dev) ret = -1; } - /* Update the pending broadcast SD query count for this device */ - dev->sd_pending_bcast_queries--; - - /* - * If there are no pending broadcast queries for this device, mark it as - * done (-1). - */ - if (dev->sd_pending_bcast_queries == 0) - dev->sd_pending_bcast_queries = -1; - wpabuf_free(req); return ret;