From 5d0340e435f90599a8072ad8cd67ef8ef4be116a Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Fri, 6 Dec 2019 16:44:55 +0300 Subject: [PATCH] Check for 404 error of .asc downloads --- gocheese.go | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/gocheese.go b/gocheese.go index 75a7c1c..5ecd959 100644 --- a/gocheese.go +++ b/gocheese.go @@ -208,20 +208,29 @@ func refreshDir( } } if filename == filenameGet || gpgUpdate { - if _, err = os.Stat(path); err == nil { - if resp, err := http.Get(pkgURL.String() + GPGSigExt); err == nil { - sig, err := ioutil.ReadAll(resp.Body) - resp.Body.Close() - if err == nil { - if err = WriteFileSync(dirPath, path+GPGSigExt, sig); err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - return false - } - log.Println(r.RemoteAddr, "pypi downloaded signature", filename) - } - } + if _, err = os.Stat(path); err != nil { + goto GPGSigSkip + } + resp, err := http.Get(pkgURL.String() + GPGSigExt) + if err != nil { + goto GPGSigSkip + } + if resp.StatusCode != http.StatusOK { + resp.Body.Close() + goto GPGSigSkip + } + sig, err := ioutil.ReadAll(resp.Body) + resp.Body.Close() + if err != nil { + goto GPGSigSkip + } + if err = WriteFileSync(dirPath, path+GPGSigExt, sig); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return false } + log.Println(r.RemoteAddr, "pypi downloaded signature", filename) } + GPGSigSkip: path = path + SHA256Ext _, err = os.Stat(path) if err == nil { -- 2.44.0