in src/main/java/com/twitter/whiskey/nio/SSLSocket.java [86:119]
private void unwrapHandshake(ByteBuffer wrappedBuf) throws IOException {
SSLEngineResult result;
do {
// TODO(bgallagher) buffer pooling
ByteBuffer to = ByteBuffer.allocate(engine.getSession().getPacketBufferSize());
bufferedWrapped.put(wrappedBuf);
bufferedWrapped.flip();
result = engine.unwrap(bufferedWrapped, to);
bufferedWrapped.compact();
switch (result.getHandshakeStatus()) {
case NEED_UNWRAP:
break;
case NEED_WRAP:
wrapHandshake();
return;
case NEED_TASK:
runDelegatedTasks(engine);
break;
case FINISHED:
super.finishConnect();
if (bufferedWrapped.position() > 0) {
onReadable();
}
return;
case NOT_HANDSHAKING:
break;
}
} while (result.getStatus() != SSLEngineResult.Status.BUFFER_UNDERFLOW);
readAndUnwrapHandshake();
}