From 2d1d5d6be8ce0d264477b48d4295c2c34210b5e0 Mon Sep 17 00:00:00 2001 From: Adam Fowler Date: Fri, 22 Mar 2024 09:07:58 +0000 Subject: [PATCH] Clean up close because of error --- .../HummingbirdWebSocket/WebSocketHandler.swift | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/Sources/HummingbirdWebSocket/WebSocketHandler.swift b/Sources/HummingbirdWebSocket/WebSocketHandler.swift index 40e1d42..3afe300 100644 --- a/Sources/HummingbirdWebSocket/WebSocketHandler.swift +++ b/Sources/HummingbirdWebSocket/WebSocketHandler.swift @@ -86,11 +86,10 @@ actor WebSocketHandler: Sendable { await webSocket.inbound.send(frameSeq.data) frameSequence = nil } - } catch let error as NIOWebSocketError { - let errorCode = WebSocketErrorCode(error) - try await self.close(code: errorCode, outbound: webSocket.outbound, context: context) } catch { - let errorCode = WebSocketErrorCode.unexpectedServerError + // catch errors while processing websocket frames so responding close message + // can be dealt with + let errorCode = WebSocketErrorCode(error) try await self.close(code: errorCode, outbound: webSocket.outbound, context: context) } } @@ -189,13 +188,15 @@ actor WebSocketHandler: Sendable { } extension WebSocketErrorCode { - init(_ error: NIOWebSocketError) { + init(_ error: any Error) { switch error { - case .invalidFrameLength: + case NIOWebSocketError.invalidFrameLength: self = .messageTooLarge - case .fragmentedControlFrame, - .multiByteControlFrameLength: + case NIOWebSocketError.fragmentedControlFrame, + NIOWebSocketError.multiByteControlFrameLength: self = .protocolError + default: + self = .unexpectedServerError } } }