Здравствуйте, Роман.
Спасибо за помощь в поиске и устранении проблемы!
Отключение директивы ssl_ecdh_curve в Nginx помогло.
Планируется ли делать баг-репорт в Chrome?
Вы писали 12 июня 2022 г., 21:27:53:
> Добрый день,
> Удалось выяснить следующее. Имеет место проблема на стороне Хрома. Если
> точнее, в гугловой библиотоке QUICHE. Проблемa триггерится комбинацией
> EarlyData + HelloRetryRequest. Если Хром отправил EarlyData, которую сервер
> проигнорировал, то далее клиент не шлет новый ClientHello в ответ на
> HelloRetryRequest т.к. зачем-то ждет подтверждения EarlyData. В итоге
> соединение зависает и таймаутится.
ClientHello ->>
EarlyData ->> (ignore)
> <- HelloRetryRequest
> (timeout)
> Самый простой способ обойти проблему - избежать отправки HelloRetryRequest.
> В рассматриваемом случае для этого достаточно было убрать из конфигурации
> nginx директиву ssl_ecdh_curve.
> Заткнуть это также можно и в QUICHE при помощи следующего патча:
> diff --git a/quiche/quic/core/quic_session.cc b/quiche/quic/core/quic_session.cc
> index d2976006..ad5c4d3c 100644
> --- a/quiche/quic/core/quic_session.cc
> +++ b/quiche/quic/core/quic_session.cc
> @@ -2404,6 +2404,9 @@ bool QuicSession::RetransmitLostData() {
> return false;
> }
> }
> + if (connection()->encryption_level() == ENCRYPTION_ZERO_RTT) {
> + return true;
> + }
> while (!streams_with_pending_retransmission_.empty()) {
> if (!CanWriteStreamData()) {
> break;
> ----
> Roman Arutyunyan
> arut@nginx.com
> _______________________________________________
> nginx-ru mailing list -- nginx-ru@nginx.org
> To unsubscribe send an email to nginx-ru-leave@nginx.org
--
С уважением,
Izorkin mailto:izorkin@gmail.com
_______________________________________________
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-leave@nginx.org