7257ae52d8
Extract the manual stream-and-flush loop from dockerLocalProxy.ServeHTTP into a behaviour-preserving package-private streamResponse(w, body) helper, and add docker_test.go regression tests for the riskiest path (it runs on every Docker API response): - DeliversFullBodyAndFlushesPerChunk: a >32KB body delivered as several chunks (boundaries not aligned to the 32KB buffer), with the final Read returning (n>0, io.EOF) simultaneously, asserts the streamed body equals the input exactly (no loss/duplication) and that Flush ran more than once (the per-chunk flush is the whole point of the change). - StopsOnWriteErrorWithoutPanic: a writer that errors on first Write (and does not implement http.Flusher, exercising the nil-flusher fallback) breaks the loop after one write without panicking. No production behaviour change — the loop body is identical, only moved. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>