From b6ea53e697518557e390b00a936bb96a25bb5024 Mon Sep 17 00:00:00 2001 From: Kike Date: Sun, 1 Apr 2018 15:48:05 +0200 Subject: [PATCH] Fixed issue with EvenLoop assert --- Sources/WebSocket/WebSocketHandler.swift | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/Sources/WebSocket/WebSocketHandler.swift b/Sources/WebSocket/WebSocketHandler.swift index 59234bfc..1257ad05 100644 --- a/Sources/WebSocket/WebSocketHandler.swift +++ b/Sources/WebSocket/WebSocketHandler.swift @@ -101,15 +101,17 @@ internal final class WebsocketHandler: ChannelInboundHandler { currentCtx = nil } - func send(count: Int, opcode: WebSocketOpcode, bufferWriter: (inout ByteBuffer) -> ()) { + func send(count: Int, opcode: WebSocketOpcode, bufferWriter: @escaping (inout ByteBuffer) -> ()) { let ctx = currentCtx! - guard ctx.channel.isActive else { return } - // We can't send if we sent a close message. - guard !self.awaitingClose else { return } - var buffer = ctx.channel.allocator.buffer(capacity: count) - bufferWriter(&buffer) - let frame = WebSocketFrame(fin: true, opcode: opcode, data: buffer) - ctx.writeAndFlush(wrapOutboundOut(frame), promise: nil) + ctx.eventLoop.execute { + guard ctx.channel.isActive else { return } + // We can't send if we sent a close message. + guard !self.awaitingClose else { return } + var buffer = ctx.channel.allocator.buffer(capacity: count) + bufferWriter(&buffer) + let frame = WebSocketFrame(fin: true, opcode: opcode, data: buffer) + ctx.writeAndFlush(self.wrapOutboundOut(frame), promise: nil) + } } private func receivedClose(ctx: ChannelHandlerContext, frame: WebSocketFrame) {