Przeglądaj źródła

HttpServer: check for keep-alive once per loop

Within each iteration of the inner dispatch loop, the value of
keep-alive doesn't change; so call the checker function only once.
Yawar Amin 12 lat temu
rodzic
commit
c93b0d7225
1 zmienionych plików z 5 dodań i 5 usunięć
  1. 5 5
      Swifter/HttpServer.swift

+ 5 - 5
Swifter/HttpServer.swift

@@ -66,6 +66,8 @@ class HttpServer
                 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), { () -> Void in
                     let parser = HttpParser()
                     while let (path, headers) = parser.parseHttpHeader(socket) {
+                        let keepAlive = parser.supportsKeepAlive(headers)
+
                         if let handler = self.handlers[path] {
                             let responseStatus = handler()
                             let responseText = responseStatus.textValue()
@@ -76,7 +78,7 @@ class HttpServer
 
                             Socket.writeStringUTF8(socket, string: "HTTP/1.1 \(responseStatus.numericValue())\r\n")
                             Socket.writeStringUTF8(socket, string: "Content-Length: \(nsdata.length)\r\n")
-                            if parser.supportsKeepAlive(headers) {
+                            if keepAlive {
                                 Socket.writeStringUTF8(socket, string: "Connection: keep-alive\r\n")
                             }
                             Socket.writeStringUTF8(socket, string: "\r\n")
@@ -84,14 +86,12 @@ class HttpServer
                         } else {
                             Socket.writeStringUTF8(socket, string: "HTTP/1.1 \(ResponseStatus.NotFound.numericValue())\r\n")
                             Socket.writeStringUTF8(socket, string: "Content-Length: 0\r\n")
-                            if parser.supportsKeepAlive(headers) {
+                            if keepAlive {
                                 Socket.writeStringUTF8(socket, string: "Connection: keep-alive\r\n")
                             }
                             Socket.writeStringUTF8(socket, string: "\r\n")
                         }
-                        if !parser.supportsKeepAlive(headers) {
-                            break
-                        }
+                        if !keepAlive { break }
                     }
                     Socket.release(socket)
                 });