From cd03142f4b59cf294d2e1d5eb0a34ab0571ea3cd Mon Sep 17 00:00:00 2001
From: akwizgran <michael@briarproject.org>
Date: Thu, 13 Jan 2022 13:13:49 +0000
Subject: [PATCH] Remove group when cleaning up.

---
 .../wifidirect/WifiDirectServiceImpl.java     | 34 ++++++++++++++++---
 1 file changed, 29 insertions(+), 5 deletions(-)

diff --git a/app/src/main/java/org/briarproject/publicmesh/wifidirect/WifiDirectServiceImpl.java b/app/src/main/java/org/briarproject/publicmesh/wifidirect/WifiDirectServiceImpl.java
index 16b9789..ca6700f 100644
--- a/app/src/main/java/org/briarproject/publicmesh/wifidirect/WifiDirectServiceImpl.java
+++ b/app/src/main/java/org/briarproject/publicmesh/wifidirect/WifiDirectServiceImpl.java
@@ -360,6 +360,18 @@ class WifiDirectServiceImpl implements WifiDirectService, Service {
 	}
 
 	private void releaseDiscovery() {
+		if (connectionInProgress) {
+			cancelConnection();
+			removeGroup();
+		}
+		if (SDK_INT >= 27) requireNonNull(channel).close();
+		channel = null;
+		releaseLock();
+		discoveryStatus.postValue(STOPPED);
+		LOG.info("Released peer discovery");
+	}
+
+	private void cancelConnection() {
 		ActionListener listener = new ActionListener() {
 			@Override
 			public void onSuccess() {
@@ -374,11 +386,23 @@ class WifiDirectServiceImpl implements WifiDirectService, Service {
 			}
 		};
 		requireNonNull(wifiP2pManager).cancelConnect(requireNonNull(channel), listener);
-		if (SDK_INT >= 27) requireNonNull(channel).close();
-		channel = null;
-		releaseLock();
-		discoveryStatus.postValue(STOPPED);
-		LOG.info("Released peer discovery");
+	}
+
+	private void removeGroup() {
+		ActionListener listener = new ActionListener() {
+			@Override
+			public void onSuccess() {
+				LOG.info("Removed group");
+				connectionInProgress = false;
+			}
+
+			@Override
+			public void onFailure(int reason) {
+				LOG.info("Failed to remove group: " + reason);
+				connectionInProgress = false;
+			}
+		};
+		requireNonNull(wifiP2pManager).removeGroup(requireNonNull(channel), listener);
 	}
 
 	@Override
-- 
GitLab