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.
