if (tctx.getSslAppBuf() == null) {
tctx.setSslAppBuf(ByteBuffer.allocate(engine.getSession().getApplicationBufferSize()));
tctx.getSslAppBuf().clear();
try {
log.traceNio(key, "sslHandshake()->unwrap()", "BEFORE");
result = engine.unwrap(tctx.getSslNetBuf(), tctx.getSslAppBuf());
log.traceNio(key, "sslHandshake()->unwrap()", "AFTER");
tctx.getSslNetBuf().compact();
break;
case BUFFER_OVERFLOW:
tctx.setSslAppBuf(extendBuf(tctx.getSslAppBuf(), engine.getSession().getApplicationBufferSize(), 0, false));
log.traceNio(key, "sslHandshake()->unwrap()", "OVERFLOW");
break;
try {
log.traceNio(key, "sslHandshake()->wrap()", "BEFORE");
result = engine.wrap(tctx.getSslAppBuf(), tctx.getSslNetBuf());
log.traceNio(key, "sslHandshake()->wrap()", "AFTER");
handshakeStatus = result.getHandshakeStatus();