GNOME Bugzilla – Bug 345895
Audioscrobbler handshake fails if transparent proxy is being used
Last modified: 2006-06-27 23:11:48 UTC
Please describe the problem: Debian bug #370751 Package: rhythmbox Version: 0.9.4.1-6 Severity: normal I have enabled and configured the Audioscrobbler plugin, but communication with the server fails. The relevant part of the log from running with '-d' is: (17:38:50) [0x814f8c0] [rb_audioscrobbler_do_handshake] ../../shell/rb-audioscrobbler.c:674: Performing handshake with Audioscrobbler server: http://post.audioscrobbler.com/?hs=true&p=1.1&c=rbx&v=0.9.4.1&u=bearcave (17:38:50) [0x814f8c0] [rb_audioscrobbler_parse_response] ../../shell/rb-audioscrobbler.c:520: Parsing response, status=7 (17:38:50) [0x814f8c0] [rb_audioscrobbler_do_handshake_cb] ../../shell/rb-audioscrobbler.c:703: Response: 3 (17:38:50) [0x814f8c0] [rb_audioscrobbler_do_handshake_cb] ../../shell/rb-audioscrobbler.c:704: Handshake failed I have re-entered the password several times in case of a mistype. The URL loads fine when copied and pasted into a browser. -- System Information: Debian Release: testing/unstable APT prefers testing APT policy: (500, 'testing') Architecture: i386 (i686) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.15-1-486 Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8) This bug is still present in Debian experimental package 0.9.4.90-1 Steps to reproduce: Actual results: Expected results: Does this happen every time? Other information: I have done some debugging on this and tracked down the cause of the problem. My web access is from behind a transparent proxy. In rb_autoscrobbler_perform(), the libsoup message is created and then set to HTTP/1.0. SoupMessage *msg; msg = soup_message_new (post_data == NULL ? "GET" : "POST", url); soup_message_set_http_version (msg, SOUP_HTTP_1_0); One effect of setting HTTP/1.0 is that libsoup doesn't send the HTTP Host: header with a request. The Audioscrobbler request sent is: GET /?hs=true&p=1.1&c=rbx&v=0.9.4.1&u=bearcave HTTP/1.0 Of course, this fails at the transparent cache. Remove the call to soup_message_set_http_version(), HTTP/1.1 is used, the Host: header sent and everything works fine. I'm not sure why the Audioscrobbler plugin requires HTTP 1.0. It works fine for me with HTTP 1.1. That being said, I'm not sure either why libsoup doesn't send the Host: header with HTTP 1.0, as I understand that it is an optional header in 1.0. In the short term, the work-around is to explicitly specify the network proxy in Gnome.
I'm not sure why we set HTTP/1.0 there, and it does indeed work without it, so I've removed it.