Publicados los paquetes RPM y DEB de ngtcp2 1.26.0

ngtcp2 1.26.0 ha sido añadido al repositorio de CodeIT. Los paquetes se han compilado para RHEL, CentOS, AlmaLinux, Rocky Linux y Oracle Linux 7, 8, 9 y 10, y para Ubuntu 22.04 y 24.04.

Cambios principales:

  • doc: Añadidos pseudocódigo y documentación para escribir paquetes con GSO
  • build(deps): actualizado actions/stale de 10 a 11
  • Limpieza
  • No se cierra ningún stream solo porque se reciba STOP_SENDING
  • Reestructurado conn
  • Endurecida la comprobación de la longitud de paquete con cabecera larga para la plataforma de 32 bits
  • map: eliminado la clave si el redimensionado de la tabla falla
  • examples/server: comprobada la versión QUIC
  • Añadida callback para extendmaxdata
  • Actualizadas las pruebas de callback
  • No se retira el fallback DCID si todavía se usa
  • Corregida la función de incremento de CWND en CUBIC
  • Se llama a extend_max_data al completarse el handshake
  • Se devuelve el error STREAM_LIMIT si el límite se viola por STREAMS_BLOCKED
  • Añadido ngtcp2_conn_tx_strmq_push_if_not
  • Se envían STREAM_DATA_BLOCKED/DATA_BLOCKED cuando los datos están realmente bloqueados
  • Actualizada la documentación
  • Simplificado ngtcp2_conn_write_stream
  • Reelaborada la validación entrante de NEW_CONNECTION_ID
  • Añadida la aserción de que ngtcp2_conn_tls_early_data_rejected solo se llama desde el cliente
  • Se devuelve NGTCP2_ERR_STREAM_STATE para RESET_STREAM contra un uni stream local
  • Eliminado el código que maneja el caso que es demasiado grande para un datagram UDP
  • Renombrado offset en ngtcp2_data_blocked y ngtcp2_stream_data_blocked
  • Añadidas pruebas de decodificación de transport parameters
  • Añadidas más pruebas de decodificación de transport parameters
  • Añadida prueba wf
  • Añadida prueba para reenviar NEW_TOKEN
  • Prueba Rtb
  • Simplificada la prueba conn
  • GHA: actualizado Ubuntu a 26.04
  • En examples, reescritas las pruebas con nuevas aserciones munit cxx
  • Actualizado clang-format a 21
  • GHA: actualizado clang a 21
  • Usado ossl empaquetado
  • GHA: reducidos los trabajos openssl1/3
  • GHA: reducidos los trabajos cmake
  • GHA: corregido el runner de quic interop
  • Ajustado el valor máximo de ngtcp2_ratelim.burst
  • Corregido el pacing gain de slow start
  • Restablecido max UDP payload size cuando cambia la IP address del peer
  • Comprobado el nivel de cifrado de picotls
  • Comprobado el nivel de cifrado de ossl
  • Server debería enviar CONNECTION_CLOSE en un nivel anterior
  • GHA: usado libressl para la compilación en macos
  • Añadidos archivos de oss-scanner
  • examples/client: corregido el div by zero
  • examples/server: no se truncan los tamaños de archivo en objetivos de 32 bits
  • Limitada la longitud de token
  • Añadido filtro de STREAM frame de longitud 0 a rtb_reclaim_on_retry
  • Corregido el marcador del número máximo de paquete descifrable antes de la primera descifración
  • Penalizada la escritura corta de stream data
  • Optimizando ngtcp2_rtb_reclaim_on_pto
  • ngtcp2_conn_write_aggregate_pkt2: comprobado el path para finalizar la agregación
  • Actualizado libressl a v4.4.0
  • send_quantum debe ser al menos un solo MTU
  • Usado validated_path antes de que desaparezca
  • Cierre correcto de la connection cuando se instala la clave 1 RTT más de una vez
  • El paquete 0RTT se procesa solo después de que estén disponibles las claves 0RTT y 1RTT
  • Se limita PATH_RESPONSE del cliente a la ruta no validada
  • Se verifica explícitamente el tiempo de espera de la validación de la ruta
  • Se hace que PATH_RESPONSE provoque PTO
  • Se recupera la ventana de control de flujo a nivel de conexión en el cierre de stream para RESET_STREAM
  • Se refina la detección del umbral de fragmentación de ngtcp2_rob
  • Se maneja el HANDSHAKE_DONE temprano del servidor
  • Se mejora el hash de map
  • Se rearma el temporizador de pérdida después de que se cancele por el límite de anti-amplification
  • Se gestiona correctamente el caso en que el cliente migra de vuelta a la ruta original
  • pv round no se inicia si no se envía ningún PATH_CHALLENGE
  • ngtcp2_pkt_decode_version_cid devuelve error con entrada cero
  • Se mantiene el estado de congestión si no se ha entregado nada
  • Se maneja un TLS stack que no sale sin transport params
  • Se corrige la decodificación del número de paquete
  • Se maneja el error de límite de Connection ID
  • Se rechaza ACK que reconoce un paquete enviado más tarde
  • Se elimina el rechazo de handshake address porque no es fiable
  • Se restablece el estado pendiente de ppe sin el flag WRITE_MORE establecido
  • Se maneja el apagado de stream en el callback stop_sending
  • Se revierte “Stop buffering data after shutting downstream read”
  • Se evita que un DCID usado pase a retired
  • Se evita que un DCID abandonado quede varado
  • Se devuelve un error cuando ngtcp2_conn_initiate_key_update se llama durante handshake
  • Se evita la reutilización de DCID
  • Se deriva la clave inicial antes de que se negocie la versión
  • Se evita que un DCID usado pase a retired de otra manera
  • No se llama al callback dcid_status hasta que se complete el handshake
  • Se revierte “Make sure that NGTCP2_CONN_FLAG_PPE_PENDING is not leaked”
  • No se bloquea PATH_RESPONSE por falta de DCID y credit
  • Se restablecen las variables de deshacer de CUBIC una vez que se confirma una pérdida
  • Se corrige conn_shutdown_stream_read
  • Se ajusta la confirmación de actualización de claves
  • Se corrige una fuga de memoria
  • Se cuentan los fallos de descifrado para las claves Handshake y 0RTT
  • examples/server Se corrige una fuga de handler
  • Se instala la preferred address antes de leer paquetes 0.5RTT del servidor
  • Se garantiza que al menos 1 byte de frame se asigne al codificar
  • Un STREAM frame vacío se contabiliza en el contador de glitch
  • No se borra el flag PTO eliciting
  • Se corrige el error por el que no se llama a lost_datagram
  • crypto/ossl: Se protege tx_level también de 0RTT
  • hqclient: Se eliminan streams al cerrar
  • Se corrige que 0RTT key no se descarte con callback
  • Se envían los control frames en 0RTT
  • Se revierte “Count empty STREAM frame toward glitch counter”
  • Se corrige un qlog inválido con un paquete que solo contiene PADDING
  • Se maneja la falta de memoria después de obtener Connection ID
  • Se elimina el problemático glitch counter para algunos frame
  • Se escribe el umbral de stream data
  • Se corrige ngtcp2_vec_merge
  • Se detiene la validación de la ruta de antemano
  • Se simplifica la inserción en map
  • Se actualizan las dependencias de tls
  • Se corrigen desbordamientos de heap cuando malloc solo está alineado a 4 bytes (como en ESP32)
  • examples: Se maneja el fallo de if_indextoname
  • GHA: Se elimina macos-15

La pila de bibliotecas ngtcp2 está compilada con OpenSSL 4.0.3, y el cliente QUIC se llama osslclient.