diff options
author | Ian Zimmerman <itz@buug.org> | 2011-01-29 08:43:30 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2011-01-29 08:43:30 +0100 |
commit | 27aa34d4aed3cbc1778423dbd3563285d6de626a (patch) | |
tree | 062e6aaf2cc978d925e1dacb59132319a99c482d | |
parent | 79e0db4ca0e9c13ca226c06c9228d5afb4c9a277 (diff) | |
download | mpd-27aa34d4aed3cbc1778423dbd3563285d6de626a.tar.gz mpd-27aa34d4aed3cbc1778423dbd3563285d6de626a.tar.xz mpd-27aa34d4aed3cbc1778423dbd3563285d6de626a.zip |
input/curl: enable CURLOPT_NETRC
I wanted mpd to play a mp3 stream from a music website. The stream is
only available to subscribers, which restriction is enforced through
normal http authentication. However, the URL I get from the website
is not the final URL of the stream, but a generic URL which points to
the real one through a redirect (code 301). Thus, I cannot predict
the final URL, and so I cannot use the username:password hack to force
the authentication, and mpd (libcurl on mpds behalf) fails to grab the
stream.
libcurl allows the option CURLOPT_NETRC to be set and then the
credentials can be stored in the good old .netrc file (in this case it
would be ~mpd/.netrc, of course). But mpd doesn't set this option. I
think it should.
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | src/input/curl_input_plugin.c | 1 |
2 files changed, 2 insertions, 0 deletions
@@ -1,6 +1,7 @@ ver 0.17 (2010/??/??) * input: - cdio_paranoia: new input plugin to play audio CDs + - curl: enable CURLOPT_NETRC * decoder: - mpg123: implement seeking * output: diff --git a/src/input/curl_input_plugin.c b/src/input/curl_input_plugin.c index ae645bddf..873874e12 100644 --- a/src/input/curl_input_plugin.c +++ b/src/input/curl_input_plugin.c @@ -647,6 +647,7 @@ input_curl_easy_init(struct input_curl *c, GError **error_r) curl_easy_setopt(c->easy, CURLOPT_WRITEDATA, c); curl_easy_setopt(c->easy, CURLOPT_HTTP200ALIASES, http_200_aliases); curl_easy_setopt(c->easy, CURLOPT_FOLLOWLOCATION, 1); + curl_easy_setopt(c->easy, CURLOPT_NETRC, 1); curl_easy_setopt(c->easy, CURLOPT_MAXREDIRS, 5); curl_easy_setopt(c->easy, CURLOPT_FAILONERROR, true); curl_easy_setopt(c->easy, CURLOPT_ERRORBUFFER, c->error); |