This commit is contained in:
parent
de8970016e
commit
4562bf26dd
@ -0,0 +1,55 @@
|
|||||||
|
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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user