P2P: Clear the discovery state incase of deffered GO Neg response

Bug: 17027752

Change-Id: I7d16080864264b838169f7b477598353c5d61d37
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
diff --git a/src/p2p/p2p.c b/src/p2p/p2p.c
index 767706c..5d6abe3 100644
--- a/src/p2p/p2p.c
+++ b/src/p2p/p2p.c
@@ -3572,8 +3572,17 @@
 		struct p2p_device *dev;
 		dev = p2p_get_device(p2p, addr);
 		if (dev &&
-		    dev->status == P2P_SC_FAIL_INFO_CURRENTLY_UNAVAILABLE)
+		    dev->status == P2P_SC_FAIL_INFO_CURRENTLY_UNAVAILABLE) {
 			dev->flags |= P2P_DEV_PEER_WAITING_RESPONSE;
+			if ((p2p->state == P2P_SEARCH) ||
+			    (p2p->state == P2P_LISTEN_ONLY)) {
+				/* Clear our search state or Listen state since
+				 * now peer is awaiting response from our side.
+				 */
+				p2p_dbg(p2p, "Clear the P2P discovery state");
+				p2p_stop_find(p2p);
+			}
+		}
 	}
 
 	if (p2p->state == P2P_SEARCH || p2p->state == P2P_SD_DURING_FIND)