Я использую библиотеки Poco для написания сетевого приложения, специально созданного для Poco::Net::SecureStreamSocket
. Некоторые пользователи в последнее время начали сообщать, что они видят следующую ошибку:
SSL Exception: error:1409E10F:SSL routines:ssl3_write_bytes:bad length
Это похоже на очень легко ошибку Google, но по какой-то причине я не могу найти много хорошей информации о том, что я делаю неправильно. Из того, что я почерпнул, кажется, что эта ошибка указывает на то, что было проведено повторное согласование SSL под капотом (?), И лежащая в основе библиотека SSL нуждается в клиенте (т.е. я) для повторной передачи данных. Однако, насколько я могу судить, все предыдущие сообщения были успешно переданы.
Код, который перехватывает исключение, выглядит так:
try
{
if (!m_socket)
{
return false;
}
int32_t res = m_socket->sendBytes((uint8_t*)header, send_len);
if (res != send_len)
{
// Handle error
}
res = m_socket->sendBytes(item->buffer.data(), item->buffer.size());
if (res != (int32_t)item->buffer.size())
{
// Handle error
}
return true;
}
catch (const Poco::IOException& e)
{
LOG_ERROR("transmit:IOException: " + e.displayText());
// Handle error
}
Это журнал ошибок внутри обработчика исключений для Poco::IOException
, который подсказывает мне эту проблему.