libalpm: prevent 301 redirect loop from hanging the process
If a mirror responds with a 301 redirect to itself, it will create an infinite redirect loop. This will cause pacman to hang, unresponsive to even a SIGINT. The result is pacman being unable to sync or download any package from a particular repo if its current mirror is stuck in a redirect loop. Setting libcurl's MAXREDIRS option effectively prevents a redirect loop from hanging the process. Signed-off-by: Mark Ulrich <mark.ulrich.86@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
parent
714a1b4e4e
commit
db102c67ef
1 changed files with 1 additions and 0 deletions
|
@ -259,6 +259,7 @@ static void curl_set_handle_opts(struct dload_payload *payload,
|
||||||
curl_easy_setopt(curl, CURLOPT_URL, payload->fileurl);
|
curl_easy_setopt(curl, CURLOPT_URL, payload->fileurl);
|
||||||
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error_buffer);
|
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error_buffer);
|
||||||
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10L);
|
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10L);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 10L);
|
||||||
curl_easy_setopt(curl, CURLOPT_FILETIME, 1L);
|
curl_easy_setopt(curl, CURLOPT_FILETIME, 1L);
|
||||||
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L);
|
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L);
|
||||||
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
|
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
|
||||||
|
|
Loading…
Add table
Reference in a new issue