diff --git a/server/netty-server/src/main/scala/sttp/tapir/server/netty/internal/reactivestreams/FileWriterSubscriber.scala b/server/netty-server/src/main/scala/sttp/tapir/server/netty/internal/reactivestreams/FileWriterSubscriber.scala index e7c4ca0479..28dfbb6d87 100644 --- a/server/netty-server/src/main/scala/sttp/tapir/server/netty/internal/reactivestreams/FileWriterSubscriber.scala +++ b/server/netty-server/src/main/scala/sttp/tapir/server/netty/internal/reactivestreams/FileWriterSubscriber.scala @@ -42,11 +42,13 @@ class FileWriterSubscriber(path: Path) extends PromisingSubscriber[Unit, HttpCon (), new java.nio.channels.CompletionHandler[Integer, Unit] { override def completed(result: Integer, attachment: Unit): Unit = { + httpContent.release() position += result subscription.request(1) } override def failed(exc: Throwable, attachment: Unit): Unit = { + httpContent.release() subscription.cancel() onError(exc) } diff --git a/server/netty-server/src/main/scala/sttp/tapir/server/netty/internal/reactivestreams/SimpleSubscriber.scala b/server/netty-server/src/main/scala/sttp/tapir/server/netty/internal/reactivestreams/SimpleSubscriber.scala index 40138b3614..bf79fbd994 100644 --- a/server/netty-server/src/main/scala/sttp/tapir/server/netty/internal/reactivestreams/SimpleSubscriber.scala +++ b/server/netty-server/src/main/scala/sttp/tapir/server/netty/internal/reactivestreams/SimpleSubscriber.scala @@ -25,9 +25,10 @@ private[netty] class SimpleSubscriber() extends PromisingSubscriber[Array[Byte], } override def onNext(content: HttpContent): Unit = { - val a = ByteBufUtil.getBytes(content.content()) - size += a.length - chunks.add(a) + val array = ByteBufUtil.getBytes(content.content()) + content.release() + size += array.length + chunks.add(array) subscription.request(1) }