From a47e9b9fcb911efa0ce073d4ad613c89788c65a5 Mon Sep 17 00:00:00 2001 From: Daniel Alm Date: Sat, 21 Apr 2018 12:17:22 +0200 Subject: [PATCH] Fix a memory leak in QueueHandler `QueueHandler` sometimes retains the context it is executing on in `waitingCtx`. That context's handler is the `QueueHandler` itself, leading to a retain cycle. We break it by making `waitingCtx` a weak reference. --- Sources/Async/QueueHandler.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/Async/QueueHandler.swift b/Sources/Async/QueueHandler.swift index 2b89a07d..2e0221a8 100644 --- a/Sources/Async/QueueHandler.swift +++ b/Sources/Async/QueueHandler.swift @@ -27,7 +27,7 @@ public final class QueueHandler: ChannelInboundHandler { private let eventLoop: EventLoop /// A write-ready context waiting. - private var waitingCtx: ChannelHandlerContext? + private weak var waitingCtx: ChannelHandlerContext? /// Handles errors that happen when no input promise is waiting. private var errorHandler: (Error) -> ()