У меня есть ситуация, когда мой (не нетто) клиент закрывает SSLSocket, но не основной сокет. Это делает именно то, что и следовало ожидать, он отправляет close_notify на сервер, который отвечает close_notify.
Однако мой сервер основан на Netty и использует SSLHandler, добавив LoggingHandler (), и я вижу, что он получает close_notify и отвечает close_notify. Проблема в том, что мои исходящие обработчики вообще не получают уведомлений, так как базовый сокет не закрывается, поэтому нет отключения. Я специально хочу, чтобы розетки оставались открытыми.
Мне нужно получить уведомление о том, что SSLHandler завершил работу, чтобы я мог удалить SLLHandler из конвейера и продолжить связь с обычным TCP.
Возможно ли это в Netty?
В рамках своих исследований я попытался закрыть SSlHandler со стороны сервера / нетто, и это сработало бы, за исключением того, что Netty закрывает sslhandler перед получением клиентов close_notify (согласно дизайну и спецификации), проблема в том, что любое последующее чтение базового сокета получает close_notify как необработанные данные, так как SslHandler завершил работу. Если это возможно, я бы предпочел не писать обработчик, который дублирует работу SslEngines по чтению сообщений SSL. Я понимаю, почему SSlHandler не ожидает ответа клиента close_notify, поэтому я попытался сделать это со стороны клиента, где у меня больше контроля над сокетами SSL.