Handle group tear down only at group removed event
Handling group removal at disconnect causes issues where supplicant keeps
the group and then the next invocation fails
Bug: 7403755
Change-Id: Iea7e5ec98486607f8e2c4a55be3743e0545a9da7
diff --git a/framework/java/android/net/wifi/p2p/WifiP2pService.java b/framework/java/android/net/wifi/p2p/WifiP2pService.java
index 03a0434..039319d 100644
--- a/framework/java/android/net/wifi/p2p/WifiP2pService.java
+++ b/framework/java/android/net/wifi/p2p/WifiP2pService.java
@@ -1566,9 +1566,17 @@
WifiP2pManager.ERROR);
}
break;
- /* The supplicant misses the group removed event at times and just
- * sends a network disconnect event */
- case WifiMonitor.NETWORK_DISCONNECTION_EVENT:
+ /* We do not listen to NETWORK_DISCONNECTION_EVENT for group removal
+ * handling since supplicant actually tries to reconnect after a temporary
+ * disconnect until group idle time out. Eventually, a group removal event
+ * will come when group has been removed.
+ *
+ * When there are connectivity issues during temporary disconnect, the application
+ * will also just remove the group.
+ *
+ * Treating network disconnection as group removal causes race conditions since
+ * supplicant would still maintain the group at that stage.
+ */
case WifiMonitor.P2P_GROUP_REMOVED_EVENT:
if (DBG) logd(getName() + " group removed");
handleGroupRemoved();