[Icecast-dev] 206 response for Chrome Mobile

Andrew Akers andrew at akrs.me
Wed Dec 9 17:39:31 PST 2015

Hi -

I'm using Icecast to stream some audio that I embed in an <audio> tag
on a webpage. This is working great for desktop browsers and on iOS,
but it doesn't work on Android.

It looks like Chrome mobile sends the header "Range: bytes=0-1" and
then doesn't try to load any more data when Icecast responds with a 0
byte "HTTP/1.0 200 OK" response. From my reading of the HTTP spec, it
looks like there's two options here: either ignore the range header
entirely, or return a 206 response along with headers indicating the
kinds of range responses we can deal with. Here, it doesn't look like
Icecast does either.

The headers:
GET /mount.mp3 HTTP/1.1
Host: host:8000
Connection: keep-alive
User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5X Build/MDB08L)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.76 Mobile
Accept: */*
Referer: https://host/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Range: bytes=0-1

HTTP/1.0 200 OK
Server: Icecast 2.4.2
Date: Thu, 10 Dec 2015 01:23:11 GMT
Content-Type: audio/mpeg
Cache-Control: no-cache
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Pragma: no-cache
Access-Control-Allow-Origin: *
icy-br: 32
ice-audio-info: bitrate=32;channels=1;samplerate=44100
icy-description: Description
icy-genre: None
icy-name: mount
icy-pub: 0
icy-url: https://host/

Is there a quick patch to disable range support, or a place you can
point me to in the code that might be causing this behavior?
Andrew Akers

More information about the Icecast-dev mailing list