Fix disconnect bug

This commit is contained in:
albexk 2023-12-04 18:23:08 +03:00
parent e7658f9859
commit 1e64413904
6 changed files with 40 additions and 43 deletions

View file

@ -19,7 +19,7 @@
#endif
#ifdef Q_OS_ANDROID
#include "../../platforms/android/android_controller.h"
#include "platforms/android/android_controller.h"
#endif
#ifdef Q_OS_IOS
@ -339,8 +339,8 @@ void VpnConnection::connectToVpn(int serverIndex, const ServerCredentials &crede
}
m_vpnProtocol->prepare();
#elif defined Q_OS_ANDROID
androidVpnProtocol = createDefaultAndroidVpnProtocol(container);
createAndroidConnections(container);
androidVpnProtocol = createDefaultAndroidVpnProtocol();
createAndroidConnections();
m_vpnProtocol.reset(androidVpnProtocol);
#elif defined Q_OS_IOS
@ -397,28 +397,17 @@ void VpnConnection::restoreConnection()
void VpnConnection::createAndroidConnections()
{
int serverIndex = m_settings->defaultServerIndex();
DockerContainer container = m_settings->defaultContainer(serverIndex);
createAndroidConnections(container);
}
void VpnConnection::createAndroidConnections(DockerContainer container)
{
androidVpnProtocol = createDefaultAndroidVpnProtocol(container);
androidVpnProtocol = createDefaultAndroidVpnProtocol();
connect(AndroidController::instance(), &AndroidController::connectionStateChanged, androidVpnProtocol,
&AndroidVpnProtocol::setConnectionState);
connect(AndroidController::instance(), &AndroidController::statisticsUpdated, androidVpnProtocol,
&AndroidVpnProtocol::connectionDataUpdated);
&AndroidVpnProtocol::setBytesChanged);
}
AndroidVpnProtocol *VpnConnection::createDefaultAndroidVpnProtocol(DockerContainer container)
AndroidVpnProtocol *VpnConnection::createDefaultAndroidVpnProtocol()
{
Proto proto = ContainerProps::defaultProtocol(container);
AndroidVpnProtocol *androidVpnProtocol = new AndroidVpnProtocol(proto, m_vpnConfiguration);
return androidVpnProtocol;
return new AndroidVpnProtocol(m_vpnConfiguration);
}
#endif
@ -441,7 +430,13 @@ void VpnConnection::disconnectFromVpn()
#endif
#ifdef Q_OS_ANDROID
AndroidController::instance()->stop();
if (m_vpnProtocol && m_vpnProtocol.data()) {
connect(AndroidController::instance(), &AndroidController::vpnDisconnected, this,
[this]() {
onConnectionStateChanged(Vpn::ConnectionState::Disconnected);
}, Qt::SingleShotConnection);
m_vpnProtocol.data()->stop();
}
#endif
#ifdef Q_OS_IOS