Cloudflare tarda seis semanas en encontrar un error en la biblioteca HTTP hyper

Fuentes: How we found a bug in the hyper HTTP library

Cloudflare ha detallado la investigación que llevó a detectar y corregir un error en la biblioteca HTTP de Rust hyper, utilizada por su servicio de Images sobre Workers. El fallo, una condición de carrera, se manifestaba solo de forma intermitente en imágenes grandes: la respuesta devolvía un código 200 sin errores, pero el cuerpo aparecía truncado —por ejemplo, 200 KB en lugar de los 3,3 MB esperados— al pasar por un pipeline anidado de procesamiento.

El problema surgió tras la migración de finales de 2025, cuando el equipo de Images sustituyó el intermediario FL por un nuevo binding interno basado en sockets Unix, eliminando la sobrecarga de la pila de red. Poco después del despliegue comenzaron los reportes de clientes, y la pista clave fue que la cantidad de datos que sí llegaba coincidía con el tamaño del búfer del socket en producción.

La investigación redujo el problema a un error de hyper en la escritura y vaciado del búfer interno al socket: cuando el lector era más lento, el búfer de salida se llenaba y la conexión podía cerrarse antes de enviar todos los bytes. La corrección requirió apenas cuatro líneas de código, pero fue necesario reproducir el fallo y descartar capas (binding, intermediario e Images) durante seis semanas hasta aislar la causa raíz en la biblioteca open source.