Fix disconnect bug
This commit is contained in:
parent
e7658f9859
commit
1e64413904
6 changed files with 40 additions and 43 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue