Ver código fonte

Fix bug where server may fail to start

There is a race condition where the state may not be set before the
async task checks its value. This causes the server to shutdown
with no warning. This change will fix this bug.
Oliver 8 anos atrás
pai
commit
8f9e068bed
1 arquivos alterados com 1 adições e 1 exclusões
  1. 1 1
      Sources/HttpServerIO.swift

+ 1 - 1
Sources/HttpServerIO.swift

@@ -75,6 +75,7 @@ public class HttpServerIO {
         self.state = .starting
         let address = forceIPv4 ? listenAddressIPv4 : listenAddressIPv6
         self.socket = try Socket.tcpSocketForListen(port, forceIPv4, SOMAXCONN, address)
+        self.state = .running
         DispatchQueue.global(qos: priority).async { [weak self] in
             guard let strongSelf = self else { return }
             guard strongSelf.operating else { return }
@@ -93,7 +94,6 @@ public class HttpServerIO {
             }
             strongSelf.stop()
         }
-        self.state = .running
     }
 
     public func stop() {