{input,storage}/curl: set CURLOPT_HTTPAUTH=CURLAUTH_BASIC

With the default value CURLAUTH_ANY, libcurl needs to probe for
authentication methods first, and only the second request will have an
Authorization header.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1155
This commit is contained in:
Max Kellermann 2021-05-17 19:24:12 +02:00
parent 7c09e44ad4
commit 638dfc3981
3 changed files with 10 additions and 0 deletions

2
NEWS
View File

@ -1,6 +1,8 @@
ver 0.22.7 (not yet released) ver 0.22.7 (not yet released)
* protocol * protocol
- don't use glibc extension to parse time stamps - don't use glibc extension to parse time stamps
* input
- curl: send user/password in the first request, save one roundtrip
* decoder * decoder
- ffmpeg: fix build problem with FFmpeg 3.4 - ffmpeg: fix build problem with FFmpeg 3.4
- gme: support RSN files - gme: support RSN files

View File

@ -421,6 +421,10 @@ CurlInputStream::InitEasy()
request->SetOption(CURLOPT_MAXREDIRS, 5L); request->SetOption(CURLOPT_MAXREDIRS, 5L);
request->SetOption(CURLOPT_FAILONERROR, 1L); request->SetOption(CURLOPT_FAILONERROR, 1L);
/* this option eliminates the probe request when
username/password are specified */
request->SetOption(CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
if (proxy != nullptr) if (proxy != nullptr)
request->SetOption(CURLOPT_PROXY, proxy); request->SetOption(CURLOPT_PROXY, proxy);

View File

@ -262,6 +262,10 @@ public:
request.SetOption(CURLOPT_FOLLOWLOCATION, 1L); request.SetOption(CURLOPT_FOLLOWLOCATION, 1L);
request.SetOption(CURLOPT_MAXREDIRS, 1L); request.SetOption(CURLOPT_MAXREDIRS, 1L);
/* this option eliminates the probe request when
username/password are specified */
request.SetOption(CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
request_headers.Append(StringFormat<40>("depth: %u", depth)); request_headers.Append(StringFormat<40>("depth: %u", depth));
request_headers.Append("content-type: text/xml"); request_headers.Append("content-type: text/xml");