diff --git a/src/Util/Network.php b/src/Util/Network.php index 7e1012827e..f222dc22df 100644 --- a/src/Util/Network.php +++ b/src/Util/Network.php @@ -285,16 +285,6 @@ class Network curl_setopt($ch, CURLOPT_TIMEOUT, intval($curl_time)); } - if (defined('LIGHTTPD')) { - if (empty($headers)) { - $headers = ['Expect:']; - } else { - if (!in_array('Expect:', $headers)) { - array_push($headers, 'Expect:'); - } - } - } - if (!empty($headers)) { curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); } @@ -337,6 +327,21 @@ class Network $a->getProfiler()->saveTimestamp($stamp1, 'network', System::callstack()); + // Very old versions of Lighttpd don't like the "Expect" header, so we remove it when needed + if ($curlResponse->getReturnCode() == 417) { + $redirects++; + + if (empty($headers)) { + $headers = ['Expect:']; + } else { + if (!in_array('Expect:', $headers)) { + array_push($headers, 'Expect:'); + } + } + Logger::info('Server responds with 417, applying workaround', ['url' => $url]); + return self::post($url, $params, $headers, $redirects, $timeout); + } + Logger::log('post_url: end ' . $url, Logger::DATA); return $curlResponse;