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