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
-
+