Fix the leak in the WebSocketClientProtocolHandshakeHandler

Motivation:
The WebSocketClientProtocolHandshakeHandler never releases the received handshake response.

Modification:
Release the message in a finally block.

Result:
No more leak
This commit is contained in:
Matthias Einwag 2014-10-07 00:11:08 +02:00 committed by Norman Maurer
parent b9e507c9cc
commit 30db808d0f

View File

@ -51,13 +51,18 @@ class WebSocketClientProtocolHandshakeHandler extends ChannelHandlerAdapter {
return; return;
} }
if (!handshaker.isHandshakeComplete()) { FullHttpResponse response = (FullHttpResponse) msg;
handshaker.finishHandshake(ctx.channel(), (FullHttpResponse) msg); try {
ctx.fireUserEventTriggered( if (!handshaker.isHandshakeComplete()) {
WebSocketClientProtocolHandler.ClientHandshakeStateEvent.HANDSHAKE_COMPLETE); handshaker.finishHandshake(ctx.channel(), response);
ctx.pipeline().remove(this); ctx.fireUserEventTriggered(
return; WebSocketClientProtocolHandler.ClientHandshakeStateEvent.HANDSHAKE_COMPLETE);
ctx.pipeline().remove(this);
return;
}
throw new IllegalStateException("WebSocketClientHandshaker should have been non finished yet");
} finally {
response.release();
} }
throw new IllegalStateException("WebSocketClientHandshaker should have been non finished yet");
} }
} }