AppStream/0001-Don-t-prematurely-abort-URL-validity-check-during-se.patch

56 lines
1.7 KiB
Diff

From d3085b7d1492766f5d7bb5de210c2b11c2e1ead9 Mon Sep 17 00:00:00 2001
From: Matthias Klumpp <matthias@tenstral.net>
Date: Sun, 18 Feb 2024 06:50:02 +0100
Subject: [PATCH] Don't prematurely abort URL validity check during semi-large
redirects
During some redirects we were already downloading enough data to warrant
aborting the download, leaving us with 302 as the last status code,
failing the reachable-URL test.
With this change, we will only start to count downloadable bytes once we
left the redirects, so we will only count downloaded data at our final
destination.
Resolves: #597
---
src/as-curl.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/src/as-curl.c b/src/as-curl.c
index 30e492a0..b860b36a 100644
--- a/src/as-curl.c
+++ b/src/as-curl.c
@@ -110,6 +110,7 @@ as_curl_download_write_bytearray_cb (char *ptr, size_t size, size_t nmemb, void
GByteArray *buf = (GByteArray *) udata;
gsize realsize = size * nmemb;
g_byte_array_append (buf, (const guint8 *) ptr, realsize);
+
return realsize;
}
@@ -368,11 +369,18 @@ as_curl_progress_check_url_cb (void *clientp,
curl_off_t ulnow)
{
AsCurlPrivate *priv = GET_PRIVATE ((AsCurl *) clientp);
+ glong status_code;
+
+ /* always continue if we are still being redirected */
+ curl_easy_getinfo (priv->curl, CURLINFO_RESPONSE_CODE, &status_code);
+ if (status_code == 302)
+ return 0;
+
priv->bytes_downloaded = dlnow;
- /* stop after 2kb have been successfully downloaded - it turns out a lot
+ /* stop after 1kb has been successfully downloaded - it turns out a lot
* of downloads fail later, so just checking for the first byte is not enough */
- if (dlnow >= 2048)
+ if (dlnow >= 1024)
return 1;
return 0;
}
--
2.43.0