ngtcp2 1.26.0 RPM 和 DEB 软件包已发布

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 就关闭任何 stream
  • 重构了 conn
  • 收紧了 32 位平台上对长报头数据包长度的检查
  • map: 如果调整表大小失败则删除键
  • examples/server: 检查 QUIC version
  • 新增了 extendmaxdata 的回调函数
  • 更新了回调测试
  • 如果仍在使用,则不回收 fallback DCID
  • 修复了 CUBIC 的 CWND 增加函数
  • 在 handshake 完成时调用 extend_max_data
  • 如果因 STREAMS_BLOCKED 违反了限制,则返回 STREAM_LIMIT 错误
  • 新增了 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 只会从客户端调用
  • 对本地 uni stream 的 RESET_STREAM 返回 NGTCP2_ERR_STREAM_STATE
  • 删除了处理对于 UDP datagram 来说过大的情况的代码
  • 重命名了 ngtcp2_data_blocked 和 ngtcp2_stream_data_blocked 中的 offset
  • 新增了 transport parameters 解码测试
  • 新增了更多 transport parameters 解码测试
  • 新增了 wf 测试
  • 新增了重新发送 NEW_TOKEN 的测试
  • Rtb 测试
  • 简化了 conn 测试
  • GHA: 已将 Ubuntu 升级到 26.04
  • examples 中使用新的 munit cxx 断言重写了测试
  • 将 clang-format 升级到 21
  • GHA: 已将 clang 升级到 21
  • 使用打包的 ossl
  • GHA: 减少了 openssl1/3 作业
  • GHA: 减少了 cmake 作业
  • GHA: 修复了 quic interop runner
  • 调整了 ngtcp2_ratelim.burst 的最大值
  • 修复了 slow start pacing gain
  • 当对端的 IP address 变化时重置 max UDP payload size
  • 检查 picotls 加密级别
  • 检查 ossl 加密级别
  • Server 应在更早的级别发送 CONNECTION_CLOSE
  • GHA: macos 构建使用 libressl
  • 新增了 oss-scanner 文件
  • examples/client: 修复了 div by zero
  • examples/server: 在 32 位目标上不截断文件大小
  • 限制 token 长度
  • 为 rtb_reclaim_on_retry 新增了 0 长度 STREAM frame 过滤器
  • 修复了第一次解密前可解密数据包的最大编号标记
  • 对较短的 stream data 写入进行了惩罚
  • 优化了 ngtcp2_rtb_reclaim_on_pto
  • ngtcp2_conn_write_aggregate_pkt2: 检查用于结束聚合的 path
  • 将 libressl 升级到 v4.4.0
  • send_quantum 至少应为单个 MTU
  • 在 validated_path 消失之前使用它
  • 当 1 RTT key 被安装超过一次时,connection 仍可优雅关闭
  • 仅在 0RTT 和 1RTT 密钥可用后才处理 0RTT 数据包
  • 将客户端的 PATH_RESPONSE 限制在未验证路径上
  • 明确验证路径验证超时
  • 使 PATH_RESPONSE 触发 PTO
  • 在 RESET_STREAM 的流关闭中回收连接级流量控制窗口
  • 改进 ngtcp2_rob 的碎片阈值检测
  • 处理来自服务器的过早 HANDSHAKE_DONE
  • 改进 map 哈希器
  • 在因 anti-amplification limit 被取消后重新启动丢包计时器
  • 正确处理客户端迁回原始路径的情况
  • 如果没有发送 PATH_CHALLENGE,则不启动 pv round
  • 使 ngtcp2_pkt_decode_version_cid 在零输入时返回错误
  • 如果没有任何内容被传递,则保持拥塞状态
  • 处理没有 transport params 就不会退出的 TLS stack
  • 修复包号解码
  • 处理 Connection ID 限制错误
  • 拒绝确认了稍后发送的数据包的 ACK
  • 由于 handshake address 不可靠,移除其中的拒绝
  • 在未设置 WRITE_MORE 标志时重置 ppe pending 状态
  • 处理 stop_sending callback 中的 stream 关闭
  • 回退 “Stop buffering data after shutting downstream read”
  • 防止已使用的 DCID 被转入 retired
  • 避免废弃的 DCID 被遗弃
  • 当在 handshake 期间调用 ngtcp2_conn_initiate_key_update 时返回错误
  • 避免 DCID 重用
  • 在协商版本之前导出初始密钥
  • 以另一种方式防止已使用的 DCID 被转入 retired
  • 直到 handshake 完成之前都不调用 dcid_status callback
  • 回退 “Make sure that NGTCP2_CONN_FLAG_PPE_PENDING is not leaked”
  • 不会因缺少 DCID 和 credit 而阻塞 PATH_RESPONSE
  • 在确认丢包后重置 CUBIC 撤销变量
  • 修复 conn_shutdown_stream_read
  • 调整密钥更新确认
  • 修复内存泄漏
  • 统计 Handshake 和 0RTT 密钥的解密失败
  • examples/server 修复 handler 泄漏
  • 在读取服务器 0.5RTT 数据包之前安装 preferred address
  • 确保编码时至少分配 1 字节的 frame
  • 空的 STREAM frame 计入 glitch counter
  • 不清除 PTO eliciting 标志
  • 修复 lost_datagram 未被调用的错误
  • crypto/ossl: 也保护 tx_level 不受 0RTT 影响
  • hqclient: 在关闭时移除 streams
  • 修复 0RTT key 未随 callback 丢弃的问题
  • 在 0RTT 中发送 control frames
  • 回退 “Count empty STREAM frame toward glitch counter”
  • 修复仅含 PADDING 的数据包导致的无效 qlog
  • 处理获取 Connection ID 之后的内存不足
  • 移除某些 frame 的问题性 glitch counter
  • 写入 stream data thresh
  • 修复 ngtcp2_vec_merge
  • 提前停止路径验证
  • 简化 map 插入
  • 升级 tls 依赖
  • 修复在 malloc 仅 4 字节对齐时(如 ESP32 上)发生的堆越界
  • examples: 处理 if_indextoname 失败
  • GHA: 移除 macos-15

ngtcp2 库栈基于 OpenSSL 4.0.3 构建,QUIC 客户端名为 osslclient。

Leave a Reply

Your email address will not be published. Required fields are marked *