diff --git a/GlassVPN/PacketTunnelProvider.swift b/GlassVPN/PacketTunnelProvider.swift index 0a19055..48f450d 100644 --- a/GlassVPN/PacketTunnelProvider.swift +++ b/GlassVPN/PacketTunnelProvider.swift @@ -1,5 +1,6 @@ import NetworkExtension +let connectMessage: Data = "CONNECT".data(using: .ascii)! let swcdUserAgent: Data = "User-Agent: swcd".data(using: .ascii)! fileprivate var hook : GlassVPNHook! @@ -25,7 +26,9 @@ class LDObserverFactory: ObserverFactory { let kill = hook.processDNSRequest(session.host) if kill { socket.forceDisconnect() } case .readData(let data, on: let socket): - if hook.forceDisconnectSWCD, data.range(of: swcdUserAgent) != nil { + if hook.forceDisconnectSWCD, + data.starts(with: connectMessage), + data.range(of: swcdUserAgent) != nil { socket.disconnect() } default: diff --git a/main/Common Classes/PrefsShared.swift b/main/Common Classes/PrefsShared.swift index 5350a88..7b7d7a8 100644 --- a/main/Common Classes/PrefsShared.swift +++ b/main/Common Classes/PrefsShared.swift @@ -12,6 +12,7 @@ enum PrefsShared { static func registerDefaults() { suite.register(defaults: [ + "ForceDisconnectSWCD" : true, "RestartReminderEnabled" : true, "RestartReminderWithText" : true, "RestartReminderWithBadge" : true, diff --git a/main/GUI/Base.lproj/Settings.storyboard b/main/GUI/Base.lproj/Settings.storyboard index 49a2dc4..d0c8a87 100644 --- a/main/GUI/Base.lproj/Settings.storyboard +++ b/main/GUI/Base.lproj/Settings.storyboard @@ -291,8 +291,8 @@ - - + @@ -488,7 +488,7 @@ If App Badge is enabled, display the letter "1" on the homescreen app icon, as l - +