Sockets aren't idle if response not completed (#63)

This commit is contained in:
Carl Brown
2017-10-07 18:18:11 +01:00
committed by Chris Bailey
parent 1994157441
commit d9dbb40531
@@ -151,6 +151,10 @@ public class PoCSocketConnectionListener: ParserConnecting {
/// Check if the socket is idle, and if so, call close()
func closeIfIdleSocket() {
if !self.responseCompleted {
//We're in the middle of a connection - we're not idle
return
}
let now = Date().timeIntervalSinceReferenceDate
if let keepAliveUntil = parser?.keepAliveUntil, now >= keepAliveUntil {
print("Closing idle socket \(socketFD)")
@@ -170,15 +174,13 @@ public class PoCSocketConnectionListener: ParserConnecting {
/// Called by the parser to let us know that a response has started being created
public func responseBeginning() {
self.socketWriterQueue.async { [weak self] in
self?.responseCompleted = false
}
self.responseCompleted = false
}
/// Called by the parser to let us know that a response is complete, and we can close after timeout
public func responseComplete() {
self.responseCompleted = true
self.socketWriterQueue.async { [weak self] in
self?.responseCompleted = true
if self?.readerSource?.isCancelled ?? true {
self?.close()
}
@@ -187,8 +189,8 @@ public class PoCSocketConnectionListener: ParserConnecting {
/// Called by the parser to let us know that a response is complete and we should close the socket
public func responseCompleteCloseWriter() {
self.responseCompleted = true
self.socketWriterQueue.async { [weak self] in
self?.responseCompleted = true
self?.close()
}
}