From 6322db900344eff28b877837c645a9c74e609361 Mon Sep 17 00:00:00 2001 From: Alejandro Revilla Date: Sun, 25 Aug 2019 23:18:02 -0300 Subject: [PATCH] Release request ByteBuf --- .../java/org/jpos/qrest/SendResponse.java | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/modules/qrest/src/main/java/org/jpos/qrest/SendResponse.java b/modules/qrest/src/main/java/org/jpos/qrest/SendResponse.java index 7f1e78ebef..56a4dad375 100644 --- a/modules/qrest/src/main/java/org/jpos/qrest/SendResponse.java +++ b/modules/qrest/src/main/java/org/jpos/qrest/SendResponse.java @@ -18,13 +18,12 @@ package org.jpos.qrest; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectWriter; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.http.*; +import io.netty.util.ReferenceCountUtil; import org.jpos.core.Configurable; import org.jpos.core.Configuration; import org.jpos.rc.Result; @@ -69,16 +68,20 @@ public void abort (long id, Serializable context) { private void sendResponse (Context ctx, ChannelHandlerContext ch, FullHttpRequest request, FullHttpResponse response) { boolean keepAlive = HttpUtil.isKeepAlive(request); HttpHeaders headers = response.headers(); - if (keepAlive) - headers.set(HttpHeaderNames.CONNECTION, HttpHeaderValues.KEEP_ALIVE); - - if (contentType != null) - headers.set(HttpHeaderNames.CONTENT_TYPE, contentType); - headers.set(HttpHeaderNames.CONTENT_LENGTH, response.content().readableBytes()); - ChannelFuture cf = ch.writeAndFlush(response); - ctx.log(cf); - if (!keepAlive) - ch.close(); + try { + if (keepAlive) + headers.set(HttpHeaderNames.CONNECTION, HttpHeaderValues.KEEP_ALIVE); + + if (contentType != null) + headers.set(HttpHeaderNames.CONTENT_TYPE, contentType); + headers.set(HttpHeaderNames.CONTENT_LENGTH, response.content().readableBytes()); + ChannelFuture cf = ch.writeAndFlush(response); + ctx.log(cf); + if (!keepAlive) + ch.close(); + } finally { + ReferenceCountUtil.release(request); + } } private FullHttpResponse error (HttpResponseStatus rc) {