Hudson CavazinandGitHub ccf1b61e20 httpp: propagate Flush() through the response writer wrappers (#6126)
handlerLogger's responseRecorder and handlerWriteTimeout's writeTimeoutWriter
both wrap http.ResponseWriter but implement neither http.Flusher nor Unwrap().
Any handler that flushes mid-response has that flush silently dropped, and its
output only reaches the client when the handler returns.

That defeats the stated purpose of writeTimeoutWriter, whose own comment says it
exists so one can "write long responses, splitted in chunks, without causing
timeouts": the deadline is reset per Write(), but nothing ever leaves the buffer
until the end.

Found while adding a server-sent-events endpoint: events written and flushed at
t=0.4s only reached the client at t=2.2s, when the handler returned.

Adding Flush() plus Unwrap() (so http.ResponseController can reach through) fixes
both. The new test drives a real listener through both wrappers and reads while
the handler is still blocked, so it fails on the current code by hitting the read
deadline.
2026-08-24 14:40:43 +00:00
2026-06-15 19:02:39 +02:00
2026-08-04 22:13:15 +00:00
2023-07-02 14:03:53 +02:00
2023-05-16 16:14:20 +02:00
2026-08-21 16:59:00 +02:00
2025-08-31 16:57:27 +02:00

MediaMTX

Website Test Lint CodeCov Release Docker Hub


MediaMTX is a ready-to-use and zero-dependency live media server and media proxy that allows to publish, read, proxy, record and playback real-time video and audio streams. It has been conceived as a "media router" that routes media streams from one end to the other, with a focus on efficiency and portability.

Features

  • Publish streams to the server with Media-over-QUIC, SRT, WebRTC, RTSP, RTMP, HLS, MPEG-TS, RTP, using FFmpeg, GStreamer, OBS Studio, Python , Golang, Unity, Web browsers, Raspberry Pi Cameras and more.
  • Read streams from the server with Media-over-QUIC, SRT, WebRTC, RTSP, RTMP, HLS, using FFmpeg, GStreamer, VLC, OBS Studio, Python , Golang, Unity, Web browsers and more.
  • Streams are automatically converted from a protocol to another
  • Serve several streams at once in separate paths
  • Reload the configuration without disconnecting existing clients (hot reloading)
  • Serve always-available streams even when the publisher is offline
  • Record streams to disk in fMP4 or MPEG-TS format
  • Playback recorded streams from disk
  • Authenticate users with internal, HTTP or JWT authentication
  • Forward streams to other servers
  • Proxy requests to other servers
  • Control the server through the Control API
  • Extract metrics from the server in a Prometheus-compatible format
  • Monitor performance to investigate CPU and RAM consumption
  • Run hooks (external commands) when clients connect, disconnect, read or publish streams
  • Compatible with Linux, Windows and macOS, does not require any dependency or interpreter, it's a single executable
  • ...and many others.
S
Description
No description provided
Readme MIT
10 MiB
Languages
Go 89.6%
JavaScript 5.8%
HTML 2.3%
Python 0.9%
CSS 0.7%
Other 0.7%