KamoCRM

Recordings and voicemail audio are written, not refused with a 500

FixVOIPService
Shipped
October 5, 2026 at 3:48 AM UTC
Author
Kamo
Commit
58eae9a

The recording and voicemail audio endpoints are declared ResponseEntity<?>, because they also answer JSON, and returned a StreamingResponseBody lambda. Spring picks its StreamingResponseBody handler from the declared type, so the lambda went to the message converters, none of which writes one: every play answered 500 **************** No converter for RecordingAudioStreamer$$Lambda with preset Content-Type audio/...). It hid behind the MinIO 503 until VOIPService could reach MinIO (SP98 Task 15's ship on the KamoCRM FreePBX). The bytes now go out as an InputStreamResource, which the resource converter writes as is for any content type, with the Content-Length and Content-Range already set (Spring applies no range handling to an InputStreamResource), and whose close releases the MinIO response. The same for another provider's voicemail (JustCall, RingCentral) in Settings. VoicemailAudioOverHttpTest plays through the dispatcher, which the direct-call tests could not.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing