View Single Post
Old 15th December 2012, 21:40   #46
Chitose
Junior Member
 
Join Date: Dec 2012
Posts: 1
-Winamp 5.63 (5.6.3.3235) - clean install
-Winamp Language Pack used (if any): N/A
-System specs (mobo, cpu, ram): N/A
-Windows OS, including Service Packs & Locale: N/A
-Video Card, Video Card Drivers version: N/A
-Sound Card, Sound Card Drivers version: N/A
-DirectX version (start > run > dxdiag): N/A
-Detailed step-by-step method of reproduction (eg. numbered list)

Firstly, I'm a developer, not a Winamp user. I noticed this bug from reports that my users were giving, and I've narrowed down the exact cause (PS: It appears on all builds of winamp i've used, regardless of OS, soundcard, yadda yadda. I've had a lot of people checking this):

I run a load-balancing stream system masquerading as an icecast mountpoint on /main.mp3 on port 1130. It works fine for every single music player that supports HTTP 302 redirecting (literally anything using a standard library or somethign that understands the full HTTP spec, including Winamp's http handler; this was tested)

When i switched over, i got notices from users that my system wasnt working at all for them. So I went and investigated it, and found out that Winamp was checking port 80, instead. Winamp worked fine when i put the system on port 80. It appears that, when Winamp cannot connect to a socket, it falls to port 80 and tries again. A real icecast socket on port 1130 correctly streamed.

What baffles me is how this is even an issue. All GET requests on port 1130 for me are somehow going to port 80. I tested the .m3u that was also in the webroot of the loadbalancer, and was returned the 404 page of my port 80 webroot.
Winamp is the only player that had an issue with this. I tested it personally with Foobar, iTunes, WMP, MPC, MPD, XiiaLive, Several android players, DeaDBeeF (which didn't work, having broken HTTP) mplayer, TuneIn, VLC, and Winamp on port 80 to make sure players would accept our new system. Additional users provided extra beta testing.

For details of the loadbalancing system:
GET /main.mp3 on port 1130 is intercepted and rewritten with mod_rewrite
An icecast relay is chosen from the script it rewrites to, and then the following is sent:
HTTP/1.1 302 Moved Temporarily
Location: $location

I came very close to removing support for Winamp entirely when I discovered this, as i now have to run a loadbalancer on both port 80 and port 1130 to deal with Winamp users, which is not desirable.
Chitose is offline   Reply With Quote