diff options
author | Christian Hesse <mail@eworm.de> | 2022-05-10 11:44:35 +0200 |
---|---|---|
committer | Christian Hesse <mail@eworm.de> | 2022-05-10 11:44:35 +0200 |
commit | 9bebcd9c517e575a023be0d1843acc4054d1363e (patch) | |
tree | 158e120e6a9e93f26be9b8ea264d4231748482d1 /patches/0001-support-http-header-to-indicate-an-expected-failure.patch | |
parent | dbdc4c5cc6adde6b5c5606d3838d543f5ba96808 (diff) | |
download | pacredir-9bebcd9c517e575a023be0d1843acc4054d1363e.tar.gz pacredir-9bebcd9c517e575a023be0d1843acc4054d1363e.tar.zst |
more solutions for caveat with pacman's server error limit
Diffstat (limited to 'patches/0001-support-http-header-to-indicate-an-expected-failure.patch')
-rw-r--r-- | patches/0001-support-http-header-to-indicate-an-expected-failure.patch | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/patches/0001-support-http-header-to-indicate-an-expected-failure.patch b/patches/0001-support-http-header-to-indicate-an-expected-failure.patch new file mode 100644 index 0000000..6bc977a --- /dev/null +++ b/patches/0001-support-http-header-to-indicate-an-expected-failure.patch @@ -0,0 +1,43 @@ +From b50863ad56c3c972e4bfbc9108523fee267d63fa Mon Sep 17 00:00:00 2001 +From: Christian Hesse <mail@eworm.de> +Date: Fri, 21 May 2021 09:52:34 +0200 +Subject: [PATCH] support http header to indicate an expected failure + +By setting an extra HTTP header 'X-Pacman-Expected-Failure' the server can +indicate that the failure is expected. The next server is tried without +error message and without increasing the server's error count. + +This can be used by servers that are not expected to be complete, for +example when serving a local cache. + +Signed-off-by: Christian Hesse <mail@eworm.de> +--- + lib/libalpm/dload.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/lib/libalpm/dload.c b/lib/libalpm/dload.c +index 7c27c3ea..d39125ca 100644 +--- a/lib/libalpm/dload.c ++++ b/lib/libalpm/dload.c +@@ -277,6 +277,7 @@ static size_t dload_parseheader_cb(void *ptr, size_t size, size_t nmemb, void *u + const char *fptr, *endptr = NULL; + const char * const cd_header = "Content-Disposition:"; + const char * const fn_key = "filename="; ++ const char * const xpef_header = "X-Pacman-Expected-Failure:"; + struct dload_payload *payload = (struct dload_payload *)user; + long respcode; + +@@ -303,6 +304,13 @@ static size_t dload_parseheader_cb(void *ptr, size_t size, size_t nmemb, void *u + } + } + ++ /* By setting an extra HTTP header 'X-Pacman-Expected-Failure' the server can ++ indicate that the failure is expected. The next server is tried without ++ error message and without increasing the server's error count. */ ++ if(_alpm_raw_ncmp(xpef_header, ptr, strlen(xpef_header)) == 0) { ++ payload->errors_ok = 1; ++ } ++ + curl_easy_getinfo(payload->curl, CURLINFO_RESPONSE_CODE, &respcode); + if(payload->respcode != respcode) { + payload->respcode = respcode; |