SslHander wrap conditional direct buffer allocation

Motivation:
The SslHandler currently forces the use of a direct buffer for the input to the SSLEngine.wrap(..) operation. This allocation may not always be desired and should be conditionally done.

Modifications:
- Use the pre-existing wantsDirectBuffer variable as the condition to do the conversion.

Result:
- An allocation of a direct byte buffer and a copy of data is now not required for every SslHandler wrap operation.
This commit is contained in:
Scott Mitchell 2014-10-29 14:12:10 -04:00 committed by Norman Maurer
parent 1914b77c71
commit e73f32b52d

View File

@ -182,7 +182,7 @@ public class SslHandler extends ByteToMessageDecoder implements ChannelOutboundH
// BEGIN Platform-dependent flags
/**
* {@code trus} if and only if {@link SSLEngine} expects a direct buffer.
* {@code true} if and only if {@link SSLEngine} expects a direct buffer.
*/
private final boolean wantsDirectBuffer;
/**
@ -581,7 +581,7 @@ public class SslHandler extends ByteToMessageDecoder implements ChannelOutboundH
ByteBuf newDirectIn = null;
try {
final ByteBuffer in0;
if (in.isDirect()) {
if (in.isDirect() || !wantsDirectBuffer) {
in0 = in.nioBuffer();
} else {
int readableBytes = in.readableBytes();