Sockets aren't idle if response not completed (#63)
This commit is contained in:
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user