我使用SSLEngine和NIO一起为我的应用程序提供非阻塞的SSL连接。在握手过程中的某个时刻(可能在接收ServerHelloDone之后),SSLEngine要求我处理委托的任务。
因此,我调用getDelegatedTask,并称其为run方法。任务本身调用X509ExtendedKeyManager.getCertificateChain,然后抛出一个NullPointerException。该异常被Handshaker捕获,并存储在以后的报告中。
但是,报告的工作方式是调用私有的checkTaskThrown方法,该方法仅在接收到消息或要发送消息时调用。但是如果没有正确地完成getCertificateChain,就没有什么要发送的,而另一方也没有发送任何东西,所以没有什么可接收的。因此,异常是隐藏的。
由于没有任何一方继续前进,我们有一个生动活泼的地方。我找不到任何方法来防止或发现它,除了
checkTaskThrown这两条路我都不想去..。
发布于 2016-02-11 06:07:19
当任务完成时,应该重试返回NEED_TASK.的操作。
您需要在您的KeyManager.中找到并修复NPE。
https://stackoverflow.com/questions/32974249
复制相似问题