Выпущены RPM- и DEB-пакеты nghttp2 1.71.0

nghttp2 1.71.0 добавлен в репозиторий CodeIT. Пакеты собраны для RHEL, CentOS, AlmaLinux, Rocky Linux и Oracle Linux 7, 8, 9 и 10, а также для Ubuntu 22.04 и 24.04.

Основные изменения:

  • Учтены простаивающие потоки
  • Добавлена возможность ограничивать максимальный размер исходящей очереди
  • Отменено «Take into account idle streams»
  • build(deps): обновлён actions/stale с 10 до 11
  • util: добавлен include <fstream>
  • Добавлена проверка длины для CONTINUATION
  • nghttpx: проверка версии QUIC
  • build(deps): обновлён golang.org/x/net с 0.57.0 до 0.58.0
  • Gha: обновлён ubuntu
  • Проверки cxx в Munit
  • Обновлён go до 1.26
  • build(deps): обновлён github.com/quic-go/quic-go с 0.61.0 до 0.62.0
  • nghttpx: рефакторинг Router
  • nghttpx: проверка TLS-сертификата клиента на основе RFC 9525
  • nghttpx: переписан CertLookupTree на основе правил RFC 9525
  • lib: HEADERS и PUSH_PROMISE запрещены в потоке CONNECT
  • Обновлён clang-format до 21
  • nghttpx: удалена серверная отправка
  • Обновлён neverbleed
  • GHA: обновлён clang до 21
  • Обновлён ubuntu
  • GHA: используется пакованный OpenSSL
  • GHA: сокращено количество заданий openssl1
  • GHA: удалена сборка cygwin, поскольку она перестала работать
  • GHA: сокращено количество заданий cmake и macos
  • build(deps): обновлён golang.org/x/net с 0.58.0 до 0.59.0
  • build(deps): обновлён github.com/quic-go/quic-go с 0.62.0 до 0.63.0
  • nghttpx: исправлена ошибка, из-за которой GSO на соединении QUIC был отключён
  • bpf: предотвращены ограничения на число инструкций verifier
  • Обновлена документация
  • build(deps): обновлён golang.org/x/net с 0.59.0 до 0.61.0
  • GHA: для сборки macos используется aws-lc вместо openssl
  • build(deps): обновлён github.com/quic-go/quic-go с 0.63.0 до 0.64.0
  • Обработан слишком большой размер окна при потреблении данных
  • Исправлено переполнение знакового целого числа в nghttp2_session_get_stream_local_window_size
  • nghttp2_nv_array_copy: обнаружено переполнение size_t
  • Улучшен хешер для map
  • Добавлены файлы oss-scanner
  • Удалён файл LICENSE
  • build(deps): обновлён github.com/quic-go/quic-go с 0.64.0 до 0.64.1
  • Исправлено обновление приоритета
  • Упрощена вставка в map
  • Обновлены зависимости
  • Окно обновляется заранее
  • Удалён публичный текст сервера
  • GHA: удалён macos-15
  • Обновлены ngtcp2 и nghttp3

Выпущены RPM- и DEB-пакеты ngtcp2 1.26.0

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.

Выпущены RPM- и DEB-пакеты nghttp3 1.19.0

nghttp3 1.19.0 добавлен в репозиторий CodeIT. Пакеты собраны для RHEL, CentOS, AlmaLinux, Rocky Linux и Oracle Linux 7, 8, 9 и 10, а также для Ubuntu 22.04 и 24.04.

Основные изменения:

  • build(deps): обновлена actions/stale с 10 до 11
  • Увеличен минимальный объём неотправленных байтов в преддверии QMux
  • map: ключ удаляется, если не удаётся изменить размер таблицы
  • Предложенные исправления
  • fuzz: исправлен сбой ASAN
  • fuzz: обновлено с использованием возможностей C++23
  • GHA: собраны fuzzers
  • fuzz: исправлена сборка в docker
  • Проверяется control stream
  • clang-format обновлён до 21
  • tests: добавлено больше тестов для trailers в CONNECT stream
  • GHA: ubuntu обновлена до 26.04
  • Перенесены изменения ngtcp2_ratelim
  • Приведено в порядок ветвление opcode в QPACK
  • Проверяется размер поля priority и рано применяется ограничение буфера
  • Копирование Nva
  • Улучшен хешер map
  • Упрощена вставка в map
  • Исправлено выравнивание balloc
  • nghttp3_buf: инициализация выполнена с помощью Designated Initializers
  • GHA: macos-15 удалена