Release netty ByteBuf after use (#2835)

This commit is contained in:
CrazyCoder 2024-07-21 17:05:49 +08:00 committed by GitHub
parent f84ab32660
commit cdb6efeca3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 35 additions and 17 deletions

View File

@ -112,12 +112,12 @@ public class Base64Command extends AnnotatedCommand {
}
InputStream input = null;
ByteBuf convertResult = null;
try {
input = new FileInputStream(f);
byte[] bytes = IOUtils.getBytes(input);
ByteBuf convertResult = null;
if (this.decode) {
convertResult = Base64.decode(Unpooled.wrappedBuffer(bytes));
} else {
@ -138,6 +138,9 @@ public class Base64Command extends AnnotatedCommand {
process.end(1, "read file error: " + e.getMessage());
return;
} finally {
if (convertResult != null) {
convertResult.release();
}
IOUtils.close(input);
}

View File

@ -134,17 +134,25 @@ public class ProxyClient {
if (msg instanceof HttpContent) {
HttpContent content = (HttpContent) msg;
ByteBuf byteBuf = content.content();
byte[] bytes = new byte[byteBuf.readableBytes()];
byteBuf.readBytes(bytes);
ByteBuf byteBuf = null;
try{
byteBuf = content.content();
byte[] bytes = new byte[byteBuf.readableBytes()];
byteBuf.readBytes(bytes);
simpleHttpResponse.setContent(bytes);
simpleHttpResponse.setContent(bytes);
promise.setSuccess(simpleHttpResponse);
promise.setSuccess(simpleHttpResponse);
if (content instanceof LastHttpContent) {
ctx.close();
if (content instanceof LastHttpContent) {
ctx.close();
}
}finally {
if (byteBuf != null) {
byteBuf.release();
}
}
}
}

View File

@ -120,17 +120,24 @@ public class TunnelClientSocketClientHandler extends SimpleChannelInboundHandler
String targetUrl = targetUrls.get(0);
SimpleHttpResponse simpleHttpResponse = proxyClient.query(targetUrl);
ByteBuf byteBuf = Base64
.encode(Unpooled.wrappedBuffer(SimpleHttpResponse.toBytes(simpleHttpResponse)));
String requestData = byteBuf.toString(CharsetUtil.UTF_8);
ByteBuf byteBuf = null;
try{
byteBuf = Base64
.encode(Unpooled.wrappedBuffer(SimpleHttpResponse.toBytes(simpleHttpResponse)));
String requestData = byteBuf.toString(CharsetUtil.UTF_8);
QueryStringEncoder queryEncoder = new QueryStringEncoder("");
queryEncoder.addParam(URIConstans.METHOD, MethodConstants.HTTP_PROXY);
queryEncoder.addParam(URIConstans.PROXY_REQUEST_ID, id);
queryEncoder.addParam(URIConstans.PROXY_RESPONSE_DATA, requestData);
QueryStringEncoder queryEncoder = new QueryStringEncoder("");
queryEncoder.addParam(URIConstans.METHOD, MethodConstants.HTTP_PROXY);
queryEncoder.addParam(URIConstans.PROXY_REQUEST_ID, id);
queryEncoder.addParam(URIConstans.PROXY_RESPONSE_DATA, requestData);
String url = queryEncoder.toString();
ctx.writeAndFlush(new TextWebSocketFrame(url));
String url = queryEncoder.toString();
ctx.writeAndFlush(new TextWebSocketFrame(url));
}finally {
if (byteBuf != null) {
byteBuf.release();
}
}
}
}