ngtcp2 1.26.0 добавлен в репозиторий CodeIT. Пакеты собраны для RHEL, CentOS, AlmaLinux, Rocky Linux и Oracle Linux 7, 8, 9 и 10, а также для Ubuntu 22.04 и 24.04.
Основные изменения:
- doc: Добавлены псевдокод и документация для записи пакетов с GSO
- build(deps): обновлён actions/stale с 10 до 11
- Очистка
- Поток не закрывается только потому, что получен STOP_SENDING
- Перестроен conn
- Ужесточена проверка длины пакета с длинным заголовком для 32-битной платформы
- map: удалён ключ, если изменение размера таблицы не удалось
- examples/server: проверена версия QUIC
- Добавлена функция обратного вызова для extendmaxdata
- Обновлены тесты callback
- fallback DCID не выводится из обращения, если он всё ещё используется
- Исправлена функция увеличения CWND в CUBIC
- Вызов extend_max_data выполняется по завершении handshake
- Возвращается ошибка STREAM_LIMIT, если предел нарушен из-за STREAMS_BLOCKED
- Добавлен ngtcp2_conn_tx_strmq_push_if_not
- Отправляются STREAM_DATA_BLOCKED/DATA_BLOCKED, когда данные действительно заблокированы
- Обновлена документация
- Упрощён ngtcp2_conn_write_stream
- Переработана проверка входящего NEW_CONNECTION_ID
- Добавлено утверждение, что ngtcp2_conn_tls_early_data_rejected вызывается только на клиенте
- Для RESET_STREAM на локальном uni stream возвращается NGTCP2_ERR_STREAM_STATE
- Удалён код, который обрабатывает случай, слишком большой для UDP datagram
- Переименован offset в ngtcp2_data_blocked и ngtcp2_stream_data_blocked
- Добавлены тесты декодирования transport parameters
- Добавлено больше тестов декодирования transport parameters
- Добавлен wf test
- Добавлен тест для повторной отправки NEW_TOKEN
- Rtb test
- Упрощён conn test
- GHA: Ubuntu обновлён до 26.04
- В examples переписаны тесты с новыми утверждениями munit cxx
- clang-format обновлён до 21
- GHA: clang обновлён до 21
- Используется упакованный ossl
- GHA: сокращены задания openssl1/3
- GHA: сокращены задания cmake
- GHA: исправлен runner для quic interop
- Подправлено максимальное значение ngtcp2_ratelim.burst
- Исправлен gain при slow start pacing
- Сброшен max UDP payload size при изменении IP address у peer
- Проверен уровень шифрования picotls
- Проверен уровень шифрования ossl
- Server должен отправлять CONNECTION_CLOSE на более раннем уровне
- GHA: для сборки на macos используется libressl
- Добавлены файлы для oss-scanner
- examples/client: исправлено деление на ноль
- examples/server: размеры файлов не усекаются на 32-битных целевых платформах
- Ограничена длина token
- Добавлен фильтр STREAM frame длиной 0 в rtb_reclaim_on_retry
- Исправлен маркер максимального номера пакета, который можно расшифровать, перед первой расшифровкой
- Снижена оценка короткой записи stream data
- Оптимизирован ngtcp2_rtb_reclaim_on_pto
- ngtcp2_conn_write_aggregate_pkt2: проверен path для завершения агрегации
- libressl обновлён до v4.4.0
- send_quantum должен быть не меньше одного MTU
- Используется validated_path до того, как он исчезнет
- Корректное завершение connection при повторной установке ключа 1 RTT более одного раза
- Обработка пакета 0RTT выполняется только после того, как доступны ключи 0RTT и 1RTT
- Ограничен PATH_RESPONSE клиента непроверенным путём
- Явно проверена задержка тайм-аута проверки пути
- Сделан PATH_RESPONSE вызывающим PTO
- Возвращено окно управления потоком на уровне соединения при закрытии потока для RESET_STREAM
- Уточнено определение порога фрагментации ngtcp2_rob
- Учтён ранний HANDSHAKE_DONE от сервера
- Улучшен хешер карты
- Повторно запущен таймер потерь после его отмены из-за ограничения anti-amplification
- Корректно обработан случай, когда клиент мигрирует обратно на исходный путь
- pv round не запускается, если не отправлен ни один PATH_CHALLENGE
- ngtcp2_pkt_decode_version_cid возвращает ошибку при нулевом вводе
- Состояние перегрузки сохраняется, если ничего не было доставлено
- Учтён TLS stack, который не выходит без transport params
- Исправлено декодирование номера пакета
- Учтена ошибка лимита Connection ID
- Отклонён ACK, который подтверждает пакет, отправленный позже
- Удалено отклонение из handshake address, поскольку оно ненадёжно
- Сброшено состояние ожидания ppe без установленного флага WRITE_MORE
- Учтена остановка потока в callback stop_sending
- Отменено «Stop buffering data after shutting downstream read»
- Предотвращён выход используемого DCID в retired
- Избегано оставления заброшенного DCID без присмотра
- Возвращается ошибка, когда ngtcp2_conn_initiate_key_update вызывается во время handshake
- Избегается повторное использование DCID
- Начальный ключ выводится до согласования версии
- Предотвращён выход используемого DCID в retired другим способом
- callback dcid_status не вызывается до завершения handshake
- Отменено «Make sure that NGTCP2_CONN_FLAG_PPE_PENDING is not leaked»
- PATH_RESPONSE не блокируется из-за нехватки DCID и credit
- Переменные отмены CUBIC сбрасываются после подтверждения потери
- Исправлен conn_shutdown_stream_read
- Уточнено подтверждение обновления ключа
- Исправлена утечка памяти
- Подсчитываются ошибки расшифрования для ключей Handshake и 0RTT
- examples/server Исправлена утечка handler
- Предпочтительный адрес устанавливается до чтения серверных пакетов 0.5RTT
- Обеспечено выделение как минимум 1 байта для frame при кодировании
- Пустой STREAM frame засчитывается в счётчик glitch
- Флаг PTO eliciting не очищается
- Исправлена ошибка, из-за которой lost_datagram не вызывается
- crypto/ossl: Проверка tx_level также защищена от 0RTT
- hqclient: Потоки удаляются при закрытии
- Исправлено, что 0RTT key не отбрасывается с callback
- Контрольные frame отправляются в 0RTT
- Отменено «Count empty STREAM frame toward glitch counter»
- Исправлен некорректный qlog с пакетом, содержащим только PADDING
- Учтена нехватка памяти после получения Connection ID
- Удалён проблемный glitch counter для некоторых frame
- Запись порога stream data
- Исправлен ngtcp2_vec_merge
- Проверка пути прекращается заранее
- Упрощена вставка в map
- Обновлены зависимости tls
- Исправлены переполнения кучи, когда malloc выравнивается только по 4 байтам (как на ESP32)
- examples: Учтён сбой if_indextoname
- GHA: Удалён macos-15
Стек библиотек ngtcp2 собран с использованием OpenSSL 4.0.3, а клиент QUIC называется osslclient.