question

Open Radio 2.0 avatar image
Open Radio 2.0 asked

Echo Dot is parsing headers in a case sensitive way

Hello everyone,

it seems there is an implementation issue in recent Echo Dot firmwares, when the AudioPlayer is used to reproduce a live stream (Shoutcast/Icecast). I don't know if this affects other Alexa devices; it doesn't seem to affect the Android Alexa app however.

When a stream is played by a skill in the AudioPlayer, the "Icy-MetaData: 1" header is included in the request: this makes the streaming server return the ICY metadata inside the stream, and the "icy-metaint" header is returned in the response to report the metadata insertion interval.

The issue is that the response headers are evaluated as case-sensitive on Echo Dot side, so the exact "icy-metaint" header is searched, and other case variations such as "Icy-Metaint" are ignored: in this case, metadata are present in the stream but not parsed by the player, resulting in a totally corrupted decoding.

This is not compliant to the specifications: RFC 7230, section 3.2 clearly states that headers are case insensitive. When used as a reverse proxy, Caddy Server, like everything that uses the standard Golang library, canonicalizes the header names, and so that "icy-metaint" becomes "Icy-Metaint", producing this effect.

I'm writing this so that if someone else is struggling with sudden corrupted decoding has a clue about what's going on, and also hoping that this can be seen by someone in the Echo Dot dev team to fix it :)

audioplayerecho dot
10 |5000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

0 Answers