File tree Expand file tree Collapse file tree
Sources/NWWebSocket/Model/Client Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -486,6 +486,12 @@ open class NWWebSocket: WebSocketConnection {
486486 if let error = error, shouldReportNWError ( error) {
487487 delegate? . webSocketDidReceiveError ( connection: self , error: error)
488488 }
489+
490+ // ENODATA: read stream is dead but connection.state reports .ready (zombie state)
491+ // Cancel to ensure connect() creates a fresh NWConnection
492+ if case let . posix( code) = error, code == . ENODATA {
493+ connection? . cancel ( )
494+ }
489495 pingTimer? . invalidate ( )
490496
491497 // Clear connection reference
@@ -523,6 +529,12 @@ open class NWWebSocket: WebSocketConnection {
523529 delegate? . webSocketDidReceiveError ( connection: self , error: error)
524530 }
525531
532+ // ENODATA: read stream is dead but connection.state reports .ready (zombie state)
533+ // Cancel to ensure connect() creates a fresh NWConnection
534+ if case let . posix( code) = error, code == . ENODATA {
535+ connection? . cancel ( )
536+ }
537+
526538 // Only schedule disconnection if we haven't already scheduled one
527539 if isDisconnectionNWError ( error) && disconnectionWorkItem == nil {
528540 let reasonData = " The websocket disconnected unexpectedly " . data ( using: . utf8)
You can’t perform that action at this time.
0 commit comments