in Sources/NIOHTTP1/HTTPTypes.swift [246:274]
func isKeepAlive(version: HTTPVersion) -> Bool {
switch self.keepAliveState {
case .close:
return false
case .keepAlive:
return true
case .unknown:
var state = KeepAliveState.unknown
for word in self[canonicalForm: "connection"] {
if word.utf8.compareCaseInsensitiveASCIIBytes(to: "close".utf8) {
// if we see multiple values, that's clearly bad and we default to 'close'
state = state != .unknown ? .close : .close
} else if word.utf8.compareCaseInsensitiveASCIIBytes(to: "keep-alive".utf8) {
// if we see multiple values, that's clearly bad and we default to 'close'
state = state != .unknown ? .close : .keepAlive
}
}
switch state {
case .close:
return false
case .keepAlive:
return true
case .unknown:
// HTTP 1.1 use keep-alive by default if not otherwise told.
return version.major == 1 && version.minor >= 1
}
}
}