56 lines
1.7 KiB
Diff
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
|
|
|