June 29, 2026

Now you stream it, now you don’t

We found a bug in the hyper HTTP library

Cloudflare’s image glitch left files mysteriously chopped — and commenters were not amused

TLDR: Cloudflare found that a tiny timing bug in a core web library was silently chopping off some large images while still reporting success, and it took weeks to track down. Commenters were split between roasting Cloudflare for missing it and arguing over whether the code basically ignored the warning on purpose.

Cloudflare just dropped a classic tech plot twist: a tiny bug caused big, very weird breakage. Its image system was sometimes sending back pictures that looked fine on paper — the server even said everything was successful — but the actual files arrived cut off mid-delivery, especially bigger ones. After six weeks of detective work, the culprit turned out to be a timing bug in a widely used Rust web library called hyper. The fix? Four lines of code. Naturally, the community immediately turned this into a full-blown comment-section drama.

The loudest reaction was basically: “Wait, customers had to tell Cloudflare first?” One commenter openly side-eyed the company for not catching broken responses at scale before users did, even invoking the ghost of past internet disasters. That sparked the reliability discourse fast: if a major internet platform can accidentally send half an image while still claiming success, what else slips through? Ouch.

Then came the nerd fight: was this a linter miss, or did the code explicitly say “yes, I really do want to ignore this”? Several commenters piled on to explain that the infamous let _ = pattern in Rust is basically the programming equivalent of shrugging on purpose. That made the bug feel even juicier — not just a typo, but a tiny “ignore this” decision that turned into silent image carnage. The mood was equal parts forensic, snarky, and darkly amused: half the thread was doing code autopsies, and the other half was asking how a giant company got blindsided by its own “everything is fine” responses.

Key Points

  • Cloudflare rearchitected the Workers Images binding at the end of 2025 to create a more direct local connection between the Workers runtime and the Images service.
  • After rollout, some image transformation requests failed intermittently for larger images, returning HTTP 200 responses with truncated bodies and no logged errors.
  • Cloudflare spent six weeks investigating and traced the issue to a race condition in the hyper HTTP library.
  • The article explains that the Images service passed the full encoded image to hyper, which buffered the response and then flushed it to a socket managed through kernel buffers.
  • The truncation occurred under conditions where the downstream reader was slower, causing socket buffer pressure during response flushing.

Hottest takes

"does not notice (until a customer complains) that they are sending broken responses at scale?" — edelbitter
"Assigning to _ in Rust specifically means that you intentionally want to discard the value" — QuantumNomad_
"This is the Rust idiom for ‘I am intentionally ignoring this return value’" — fwlr
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.