File tree 1 file changed +14
-2
lines changed 1 file changed +14
-2
lines changed Original file line number Diff line number Diff line change @@ -239,7 +239,7 @@ class _TCPSocket {
239
239
}
240
240
}
241
241
242
- deinit {
242
+ func closeSocket ( ) throws {
243
243
guard _socket != nil else { return }
244
244
#if os(Windows)
245
245
if listening { shutdown ( _socket, SD_BOTH) }
@@ -248,6 +248,11 @@ class _TCPSocket {
248
248
if listening { shutdown ( _socket, CInt ( SHUT_RDWR) ) }
249
249
close ( _socket)
250
250
#endif
251
+ _socket = nil
252
+ }
253
+
254
+ deinit {
255
+ try ? closeSocket ( )
251
256
}
252
257
}
253
258
@@ -311,6 +316,10 @@ class _HTTPServer {
311
316
return _HTTPServer ( socket: connection)
312
317
}
313
318
319
+ public func stop( ) throws {
320
+ try tcpSocket. closeSocket ( )
321
+ }
322
+
314
323
public func request( ) throws -> _HTTPRequest {
315
324
316
325
var reader = _SocketDataReader ( socket: tcpSocket)
@@ -960,7 +969,9 @@ class LoopbackServerTest : XCTestCase {
960
969
try ? subServer. readAndRespond ( )
961
970
}
962
971
} catch {
963
- NSLog ( " httpServer: \( error) " )
972
+ if ( serverActive) { // Ignore errors thrown on shutdown
973
+ NSLog ( " httpServer: \( error) " )
974
+ }
964
975
}
965
976
}
966
977
serverPort = - 2
@@ -984,6 +995,7 @@ class LoopbackServerTest : XCTestCase {
984
995
985
996
override class func tearDown( ) {
986
997
serverActive = false
998
+ try ? testServer? . stop ( )
987
999
super. tearDown ( )
988
1000
}
989
1001
}
You can’t perform that action at this time.
0 commit comments