Ignore forceDisconnect on background recording
This commit is contained in:
@@ -17,19 +17,17 @@ class LDObserverFactory: ObserverFactory {
|
||||
override func signal(_ event: ProxySocketEvent) {
|
||||
switch event {
|
||||
case .receivedRequest(let session, let socket):
|
||||
if socket.isCancelled ||
|
||||
(hook.forceDisconnectUnresolvable && session.ipAddress.isEmpty) {
|
||||
var kill = !hook.isBackgroundRecording && hook.forceDisconnectUnresolvable && session.ipAddress.isEmpty
|
||||
if kill || socket.isCancelled { // isCancelled is set by branch below
|
||||
hook.silentlyPrevented(session.host)
|
||||
socket.forceDisconnect()
|
||||
return
|
||||
} else {
|
||||
kill = hook.processDNSRequest(session.host)
|
||||
}
|
||||
let kill = hook.processDNSRequest(session.host)
|
||||
if kill { socket.forceDisconnect() }
|
||||
case .readData(let data, on: let socket):
|
||||
if hook.forceDisconnectSWCD,
|
||||
data.starts(with: connectMessage),
|
||||
data.range(of: swcdUserAgent) != nil {
|
||||
socket.disconnect()
|
||||
if !hook.isBackgroundRecording, hook.forceDisconnectSWCD,
|
||||
data.starts(with: connectMessage), data.range(of: swcdUserAgent) != nil {
|
||||
socket.disconnect() // sets isCancelled above
|
||||
}
|
||||
default:
|
||||
break
|
||||
|
||||
@@ -10,6 +10,7 @@ class GlassVPNHook {
|
||||
private var cachedNotify: CachedConnectionAlert!
|
||||
private var currentlyRecording: Bool = false
|
||||
|
||||
public var isBackgroundRecording: Bool = false
|
||||
public var forceDisconnectUnresolvable: Bool = false
|
||||
public var forceDisconnectSWCD: Bool = false
|
||||
|
||||
@@ -22,6 +23,7 @@ class GlassVPNHook {
|
||||
setAutoDelete(PrefsShared.AutoDeleteLogsDays)
|
||||
cachedNotify = CachedConnectionAlert()
|
||||
currentlyRecording = PrefsShared.CurrentlyRecording != .Off
|
||||
isBackgroundRecording = PrefsShared.CurrentlyRecording == .Background
|
||||
forceDisconnectUnresolvable = PrefsShared.ForceDisconnectUnresolvableDNS
|
||||
forceDisconnectSWCD = PrefsShared.ForceDisconnectSWCD
|
||||
}
|
||||
@@ -34,6 +36,7 @@ class GlassVPNHook {
|
||||
autoDeleteTimer?.invalidate()
|
||||
cachedNotify = nil
|
||||
currentlyRecording = false
|
||||
isBackgroundRecording = false
|
||||
forceDisconnectUnresolvable = false
|
||||
forceDisconnectSWCD = false
|
||||
}
|
||||
@@ -57,6 +60,7 @@ class GlassVPNHook {
|
||||
case "recording-now":
|
||||
let newState = CurrentRecordingState(rawValue: Int(value) ?? 0)
|
||||
currentlyRecording = newState != .Off
|
||||
isBackgroundRecording = newState == .Background
|
||||
return
|
||||
case "disconnect-unresolvable":
|
||||
forceDisconnectUnresolvable = value == "1"
|
||||
|
||||
Reference in New Issue
Block a user