SSL_write() завершается успешно, но Wireshark захватывает соответствующий пакет данных приложения с двухсекундной задержкой.
Это задержка возникает периодически, примерно 1 из 10–20 попыток.
Пример кода:
Вот фрагмент кода, который отправляет данные с использованием SSL.
Код: Выделить всё
// set to blocking before write
fcntl(g_ssl_sock_id, F_SETFL, flags & (~O_NONBLOCK));
// Since the original function contains other judgment logic such as TCP, the SSL_write code is extracted separately
static int ssl_write()
{
int send_len, len = total_len;;
unsigned char *cur_p = send_data;
print_timestamp("Before SSL_write");
while (len > 0)
{
send_len = (len > TCP_MAX_SSL_SEND_BUFFER_SIZE) ? TCP_MAX_SSL_SEND_BUFFER_SIZE : len;
ret = SSL_write((SSL *)ssl_handle.handle, cur_p, send_len);
print_timestamp("After SSL_write");
if (ret != send_len)
{
LOG("SslSend data error: %d, exp: %d\n", ret, send_len);
memset(send_data, 0, total_len);
if (dyn_allocate)
{
uai_free(send_data);
}
return (g_err_code = UAI_ERROR);
}
len -= send_len;
cur_p += send_len;
}
memset(send_data, 0, total_len);
if (dyn_allocate)
{
uai_free(send_data);
}
return (g_err_code = UAI_OK);
}
Код: Выделить всё
//setsockopt TCP_NODELAY to disable nagle algorithm but still not work.
[info_callback]: Состояние SSL: SSLv3 записывает клиентский привет A
[print_timestamp]:BBB ssl time=[2024-10-16 11:14:00.909600], перед SSL_write
[print_timestamp]:BBB ssl time=[2024-10-16 11:14:00.909912], После SSL_write
Einfo_callback]:SSL alert] : close notify
введите здесь описание изображения
Кто-нибудь сталкивался с подобной проблемой или знает, что может быть причиной этого? Буду признателен за любые идеи или предложения по дальнейшему устранению этой неполадки. Заранее спасибо!
Подробнее здесь: https://stackoverflow.com/questions/791 ... cond-delay
Мобильная версия