Я создал собственную библиотеку XMPP-PHP и только что реализовал поддержку TLS. У меня проблема с пересмотром потока.
Если я отправляю <starttls>
, мне обязательно нужно сначала получить ответ от сервера, чтобы установить соединение, разрешающее шифрование:
stream_socket_enable_crypto($this->socket->connection, true, STREAM_CRYPTO_METHOD_SSLv23_CLIENT);
Если я не запускаю метод getResponse()
, который в основном:
public function getResponse(): string
{
$response = '';
while ($out = fgets($this->socket->connection)) {
$response .= $out;
}
return $response;
}
Я получаю следующее:
Предупреждение: stream_socket_enable_crypto (): операция SSL не выполнена с кодом
1. Сообщения об ошибках OpenSSL: ошибка: 140770FC: процедуры SSL: SSL23_GET_SERVER_HELLO: неизвестный протокол в
/.../xmpp-php/src/XmppClient.php в строке 121
Это делает невозможным для меня установить соединение TLS "за кулисами". Если я включу ответную часть извлечения, все будет работать как надо.
Как я могу предотвратить это?