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 7168aa4815
commit 41d9830e07

View File

@ -176,7 +176,7 @@ public class SslHandler extends ByteToMessageDecoder {
// 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;
/**
@ -533,7 +533,7 @@ public class SslHandler extends ByteToMessageDecoder {
ByteBuf newDirectIn = null;
try {
final ByteBuffer in0;
if (in.isDirect()) {
if (in.isDirect() || !wantsDirectBuffer) {
in0 = in.nioBuffer();
} else {
int readableBytes = in.readableBytes();