mirror of
https://github.com/gesellix/Bose-SoundTouch.git
synced 2026-08-18 08:36:13 +00:00
The embedded player's TTS proxy made a server-side call back to the service over the public ServiceURL. When that URL is HTTPS with the service's self-signed CA, the call failed with "x509: certificate signed by unknown authority" — the service didn't trust its own CA. Route the player's own server-side self-calls to the service's loopback HTTP listener instead (new WebApp.InternalServiceURL, used via proxyServiceURL()). Loopback is plain HTTP, so it needs no CA and works on HTTP and HTTPS deployments alike, including before the CA is generated, and it doesn't depend on the public URL being routable from inside the service. ServiceURL stays public: Play URL bakes it into the stream URLs the speaker fetches, and the UI displays it. config.port is always the plain-HTTP listener (http.Serve); TLS lives on a separate httpsAddr, so the loopback URL can never hit a TLS-only socket. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>