diff --git a/src/recur.c b/src/recur.c index a195dd44..1469e318 100644 --- a/src/recur.c +++ b/src/recur.c @@ -806,6 +806,12 @@ descend_redirect (const char *redirected, struct url *orig_parsed, int depth, if (reason == WG_RR_SUCCESS) blacklist_add (blacklist, upos->url->url); + else if (reason == WG_RR_LIST || reason == WG_RR_REGEX) + { + DEBUGP (("Ignoring decision for redirects, decided to load it.\n")); + blacklist_add (blacklist, upos->url->url); + reason = WG_RR_SUCCESS; + } else DEBUGP (("Redirection \"%s\" failed the test.\n", redirected)); diff --git a/testenv/Makefile.am b/testenv/Makefile.am index 8f619072..3febec76 100644 --- a/testenv/Makefile.am +++ b/testenv/Makefile.am @@ -105,6 +105,7 @@ if HAVE_PYTHON3 Test-Post.py \ Test-recursive-basic.py \ Test-recursive-include.py \ + Test-recursive-redirect.py \ Test-redirect.py \ Test-redirect-crash.py \ Test--rejected-log.py \ diff --git a/testenv/Test-recursive-redirect.py b/testenv/Test-recursive-redirect.py new file mode 100644 index 00000000..8a114a59 --- /dev/null +++ b/testenv/Test-recursive-redirect.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python3 +from sys import exit +from test.http_test import HTTPTest +from test.base_test import HTTP, HTTPS +from misc.wget_file import WgetFile + +""" + Basic test of --recursive. +""" +############# File Definitions ############################################### +File1 = """<html><body> +<a href=\"/a/File2.html\">text</a> +<a href=\"/b/File3.html\">text</a> +</body></html>""" +File2 = "With lemon or cream?" +File3 = "Surely you're joking Mr. Feynman" + +File1_rules = { + "Response" : 301, + "SendHeader" : {"Location" : "/b/File1.html"} +} + +File1_File = WgetFile ("a/File1.html", "", rules=File1_rules) +File1_Redirected = WgetFile ("b/File1.html", File1) +File1_Retrieved = WgetFile ("a/File1.html", File1) +File2_File = WgetFile ("a/File2.html", File2) +File3_File = WgetFile ("b/File3.html", File3) + +WGET_OPTIONS = "--recursive --no-host-directories --include-directories=a" +WGET_URLS = [["a/File1.html"]] + +Servers = [HTTP] + +Files = [[File1_Redirected, File1_File, File2_File, File3_File]] +Existing_Files = [] + +ExpectedReturnCode = 0 +ExpectedDownloadedFiles = [File1_Retrieved, File2_File] +Request_List = [["GET /a/File1.html", + "GET /a/File2.html", + "GET /b/File3.html"]] + +################ Pre and Post Test Hooks ##################################### +pre_test = { + "ServerFiles" : Files, + "LocalFiles" : Existing_Files +} +test_options = { + "WgetCommands" : WGET_OPTIONS, + "Urls" : WGET_URLS +} +post_test = { + "ExpectedFiles" : ExpectedDownloadedFiles, + "ExpectedRetcode" : ExpectedReturnCode +} + +err = HTTPTest ( + pre_hook=pre_test, + test_params=test_options, + post_hook=post_test, + protocols=Servers +).begin () + +exit (err)