]> Cypherpunks.ru repositories - gocheese.git/commitdiff
Check for 404 error of .asc downloads
authorSergey Matveev <stargrave@stargrave.org>
Fri, 6 Dec 2019 13:44:55 +0000 (16:44 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Fri, 6 Dec 2019 13:44:55 +0000 (16:44 +0300)
gocheese.go

index 75a7c1caf120a5b83803f6a099bc8625032d64d7..5ecd959bc61e6f1a5881f8dc0d6b8c6b97b43de6 100644 (file)
@@ -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 {