From 332f0b2711572e3dd29521fba03bf675ba57e18d Mon Sep 17 00:00:00 2001 From: "Sascha L. Teichmann" Date: Mon, 18 Jul 2022 10:27:59 +0200 Subject: [PATCH] Only report bad directories in listing check only once. --- cmd/csaf_checker/links.go | 12 +++++++++++- cmd/csaf_checker/processor.go | 4 +++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/cmd/csaf_checker/links.go b/cmd/csaf_checker/links.go index 02e649a..70c70dd 100644 --- a/cmd/csaf_checker/links.go +++ b/cmd/csaf_checker/links.go @@ -25,7 +25,11 @@ type ( pages map[string]*pageContent ) -func (pgs pages) listed(path string, pro *processor) (bool, error) { +func (pgs pages) listed( + path string, + pro *processor, + badDirs map[string]struct{}, +) (bool, error) { pathURL, err := url.Parse(path) if err != nil { return false, err @@ -50,6 +54,10 @@ func (pgs pages) listed(path string, pro *processor) (bool, error) { return false, err } + if _, ok := badDirs[base]; ok { + return false, errContinue + } + // load page client := pro.httpClient() pro.checkTLS(base) @@ -59,11 +67,13 @@ func (pgs pages) listed(path string, pro *processor) (bool, error) { if err != nil { pro.badDirListings.error("Fetching %s failed: %v", base, err) + badDirs[base] = struct{}{} return false, errContinue } if res.StatusCode != http.StatusOK { pro.badDirListings.error("Fetching %s failed. Status code %d (%s)", base, res.StatusCode, res.Status) + badDirs[base] = struct{}{} return false, errContinue } diff --git a/cmd/csaf_checker/processor.go b/cmd/csaf_checker/processor.go index 92d80ba..9010cd9 100644 --- a/cmd/csaf_checker/processor.go +++ b/cmd/csaf_checker/processor.go @@ -873,8 +873,10 @@ func (p *processor) checkListing(string) error { var unlisted []string + badDirs := map[string]struct{}{} + for f := range p.alreadyChecked { - found, err := pgs.listed(f, p) + found, err := pgs.listed(f, p, badDirs) if err != nil && err != errContinue { return err }