From 595b3745f1091e9e4b5ffeb256c9ba25b2533221 Mon Sep 17 00:00:00 2001
From: Timo Teräs <timo.teras@iki.fi>
Date: Mon, 24 Apr 2023 16:53:11 +0300
Subject: libfetch, apk: display warning for permanent redirects during init

fixes #10776
---
 src/apk.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

(limited to 'src')

diff --git a/src/apk.c b/src/apk.c
index 3baae46..3073584 100644
--- a/src/apk.c
+++ b/src/apk.c
@@ -488,6 +488,20 @@ static int remove_empty_strings(int count, char **args)
 	return j;
 }
 
+static void fetch_redirect(int code, const struct url *cur, const struct url *next)
+{
+	char *url;
+
+	switch (code) {
+	case 301: // Moved Permanently
+	case 308: // Permanent Redirect
+		url = fetchStringifyURL(next);
+		apk_warning("Permanently redirected to %s", url);
+		free(url);
+		break;
+	}
+}
+
 int main(int argc, char **argv)
 {
 	void *ctx = NULL;
@@ -523,6 +537,7 @@ int main(int argc, char **argv)
 	init_openssl();
 	setup_automatic_flags();
 	fetchTimeout = 60;
+	fetchRedirectMethod = fetch_redirect;
 	fetchConnectionCacheInit(32, 4);
 
 	r = parse_options(argc, argv, applet, ctx, &dbopts);
@@ -601,6 +616,7 @@ int main(int argc, char **argv)
 
 	apk_string_array_resize(&args, argc);
 	memcpy(args->item, argv, argc * sizeof(*argv));
+	fetchRedirectMethod = NULL;
 
 	r = applet->main(ctx, &db, args);
 	signal(SIGINT, SIG_IGN);
-- 
cgit v1.2.3-70-g09d2