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