From 9ca8c66c47af98e2c22896f6b89d181de1abc7eb Mon Sep 17 00:00:00 2001 From: Alex Kh Date: Thu, 23 Dec 2021 13:13:55 +0400 Subject: [PATCH] Tried to get rid of crashes on sequential vpn turn on/off --- client/3rd/PacketProcessor/pp_ios.xcconfig | 6 +++--- client/3rd/ShadowSocks/ss_ios.xcconfig | 6 +++--- client/protocols/ios_vpnprotocol.h | 2 +- client/protocols/ios_vpnprotocol.mm | 3 +++ client/ui/pages_logic/VpnLogic.cpp | 5 ++++- client/vpnconnection.cpp | 6 ++++-- 6 files changed, 18 insertions(+), 10 deletions(-) diff --git a/client/3rd/PacketProcessor/pp_ios.xcconfig b/client/3rd/PacketProcessor/pp_ios.xcconfig index f538b790..891f84fe 100644 --- a/client/3rd/PacketProcessor/pp_ios.xcconfig +++ b/client/3rd/PacketProcessor/pp_ios.xcconfig @@ -17,6 +17,6 @@ SDKROOT[arch=armv7s] = iphoneos VALID_ARCHS[sdk=iphoneos*] = arm64 -PROJECT_TEMP_DIR = /Users/sanchez/work/vied/ios/vpn/desktop-client-bkp/client/3rd/PacketProcessor/build/PacketProcessor.build -CONFIGURATION_BUILD_DIR = /Users/sanchez/work/vied/ios/vpn/desktop-client-bkp/client/3rd/PacketProcessor/build/Release-iphoneos -BUILT_PRODUCTS_DIR = /Users/sanchez/work/vied/ios/vpn/desktop-client-bkp/client/3rd/PacketProcessor/build/Release-iphoneos \ No newline at end of file +PROJECT_TEMP_DIR = $(SRCROOT)/client/3rd/PacketProcessor/build/PacketProcessor.build +CONFIGURATION_BUILD_DIR = $(SRCROOT)/client/3rd/PacketProcessor/build/Release-iphoneos +BUILT_PRODUCTS_DIR = $(SRCROOT)/client/3rd/PacketProcessor/build/Release-iphoneos \ No newline at end of file diff --git a/client/3rd/ShadowSocks/ss_ios.xcconfig b/client/3rd/ShadowSocks/ss_ios.xcconfig index 7c355554..19e42e00 100644 --- a/client/3rd/ShadowSocks/ss_ios.xcconfig +++ b/client/3rd/ShadowSocks/ss_ios.xcconfig @@ -19,6 +19,6 @@ SDKROOT[arch=armv7s] = iphoneos VALID_ARCHS[sdk=iphoneos*] = arm64 -PROJECT_TEMP_DIR = /Users/sanchez/work/vied/ios/vpn/desktop-client-bkp/client/3rd/ShadowSocks/build/ShadowSocks.build -CONFIGURATION_BUILD_DIR = /Users/sanchez/work/vied/ios/vpn/desktop-client-bkp/client/3rd/ShadowSocks/build/Release-iphoneos -BUILT_PRODUCTS_DIR = /Users/sanchez/work/vied/ios/vpn/desktop-client-bkp/client/3rd/ShadowSocks/build/Release-iphoneos \ No newline at end of file +PROJECT_TEMP_DIR = $(SRCROOT)/client/3rd/ShadowSocks/build/ShadowSocks.build +CONFIGURATION_BUILD_DIR = $(SRCROOT)/client/3rd/ShadowSocks/build/Release-iphoneos +BUILT_PRODUCTS_DIR = $(SRCROOT)/client/3rd/ShadowSocks/build/Release-iphoneos \ No newline at end of file diff --git a/client/protocols/ios_vpnprotocol.h b/client/protocols/ios_vpnprotocol.h index b4023014..2e0f2759 100644 --- a/client/protocols/ios_vpnprotocol.h +++ b/client/protocols/ios_vpnprotocol.h @@ -16,7 +16,7 @@ public: explicit IOSVpnProtocol(amnezia::Proto proto, const QJsonObject& configuration, QObject* parent = nullptr); static IOSVpnProtocol* instance(); - virtual ~IOSVpnProtocol() = default; + virtual ~IOSVpnProtocol() override = default; bool initialize(); diff --git a/client/protocols/ios_vpnprotocol.mm b/client/protocols/ios_vpnprotocol.mm index a94071e0..9d3132a0 100644 --- a/client/protocols/ios_vpnprotocol.mm +++ b/client/protocols/ios_vpnprotocol.mm @@ -82,6 +82,9 @@ ErrorCode IOSVpnProtocol::start() QString protocol = result["protocol"].toString(); + if (!m_controller) + initialize(); + switch (m_protocol) { case amnezia::Proto::OpenVpn: if (currentProto != m_protocol) { diff --git a/client/ui/pages_logic/VpnLogic.cpp b/client/ui/pages_logic/VpnLogic.cpp index 65bf3fc2..14c7ccd0 100644 --- a/client/ui/pages_logic/VpnLogic.cpp +++ b/client/ui/pages_logic/VpnLogic.cpp @@ -92,7 +92,10 @@ void VpnLogic::onBytesChanged(quint64 receivedData, quint64 sentData) void VpnLogic::onConnectionStateChanged(VpnProtocol::VpnConnectionState state) { qDebug() << "VpnLogic::onConnectionStateChanged" << VpnProtocol::textConnectionState(state); - + if (uiLogic()->m_vpnConnection == NULL) { + qDebug() << "VpnLogic::onConnectionStateChanged" << VpnProtocol::textConnectionState(state) << "невозможно, соединение отсутствует (уничтожено ранее)"; + return; + } bool pbConnectEnabled = false; bool pbConnectChecked = false; diff --git a/client/vpnconnection.cpp b/client/vpnconnection.cpp index 23767697..6741ad89 100644 --- a/client/vpnconnection.cpp +++ b/client/vpnconnection.cpp @@ -34,8 +34,10 @@ VpnConnection::VpnConnection(QObject* parent) : QObject(parent), VpnConnection::~VpnConnection() { - m_vpnProtocol->deleteLater(); - m_vpnProtocol.clear(); + if (m_vpnProtocol != nullptr) { + m_vpnProtocol->deleteLater(); + m_vpnProtocol.clear(); + } } void VpnConnection::onBytesChanged(quint64 receivedBytes, quint64 sentBytes)