Bug #175
Audacious uses HTTP/1.1 though does not fully implement it.
0%
Description
Scenario:
There is an Apache Traffic Server installed between internet and a machine with Audacious. When playing shoutcast streams, Audacious sends GET with HTTP/1.1. Traffic Server responds with:
HTTP/1.1 200 Connection Established
Date: Thu, 13 Sep 2012 05:07:26 GMT
Connection: close
Server: ATS/3.2.0
.. and then uses chunked encoding to send original servers' response. Audacious apparently is not able to handle chunked encoding and music plays with defects. The fix is either to downgreade Audacious requests to HTTP/1.0 or implement chunked encoding processing properly.
I am ready to provide any additional information required.
History
#1
Updated by Timur Irmatov almost 13 years ago
Copied wrong response in original description. This is correct reponse given by Apache Traffic Server:
HTTP/1.1 200 Connection Established
Date: Thu, 13 Sep 2012 05:34:13 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Server: ATS/3.2.0
ICY 200 OK
Date: Thu, 13 Sep 2012 05:34:17 GMT
icy-notice1: <BR>This stream requires <a href="http://www.winamp.com/">Winamp</a><BR>
icy-notice2: Firehose Ultravox/SHOUTcast Relay Server/Linux v2.6.0<BR>
icy-name: Vocal Trance - DIGITALLY IMPORTED - a fusion of trance, dance, and chilling vocals together!
icy-genre: Electronic Trance Pop
icy-url: http://www.di.fm/vocaltrance
Content-Type: audio/mpeg
icy-pub: 1
icy-br: 96
Connection: close
<... and then comes audio stream with chunked encoding ...>
#2
Updated by John Lindgren almost 13 years ago
- Status changed from New to Rejected
This is a bug in libneon if your guess is correct. Audacious itself doesn't include an HTTP implementation.
#3
Updated by John Lindgren almost 13 years ago
This may be relevant:
http://comments.gmane.org/gmane.comp.web.webdav.neon.general/612
#4
Updated by Timur Irmatov almost 13 years ago
John, thanks for commenting. But, here's the thing. Without chunked encoding, all audio data is delivered (by libneon, as you write) to Audacious as is (correctly). With chunked encoding, data stream looks like a list of two parts: chunk length and chunk data itself. This pair should be handled by libneon, and only chunk data should be delivered to Audacious. My guess is that both chunk length and chunk data are delivered to Audacious, and those chunk length bytes cause audio defects (because chunk length is not audio data, of course). But this is only my guess. As I am no a C developer I don't have necessary skill to confirm this. Could you bring this bug to libneon developers?
I guess someone has seen this problem, but didn't finished troubleshooting: http://lists.manyfish.co.uk/pipermail/neon/2010-December/001310.html
#5
Updated by Timur Irmatov almost 13 years ago
I am willing to provide help in testing any patches / collecting more info (like traffic dumps etc).
#6
Updated by John Lindgren almost 13 years ago
Timur, I don't know much about chunked encoding myself (actually, I had never heard of it until your report). If there is a way for me to reproduce the problem you are seeing, I am willing to do some debugging on it and forward a bug report to the libneon folks if necessary. Otherwise, I can't do much to help. The point where the data is transferred from libneon to Audacious is at audacious-plugins/src/neon/neon.c line 629 if you want to do some debugging yourself.