]> Cypherpunks.ru repositories - gocheese.git/blobdiff - refresh.go
Ability to turn off filesystem sync
[gocheese.git] / refresh.go
index 11c3ab7a52a73db2c3b13aa08a0f4723c7cfbc8a..d41f122ead64a4cca959421322bfd6cce1efc4b2 100644 (file)
@@ -37,6 +37,8 @@ import (
        "golang.org/x/crypto/blake2b"
 )
 
+var pypiHTTPTransport http.Transport
+
 func blake2b256New() hash.Hash {
        h, err := blake2b.New256(nil)
        if err != nil {
@@ -54,7 +56,8 @@ func refreshDir(
        if _, err := os.Stat(filepath.Join(*root, pkgName, InternalFlag)); err == nil {
                return true
        }
-       resp, err := http.Get(*pypiURL + pkgName + "/")
+       c := http.Client{Transport: &pypiHTTPTransport}
+       resp, err := c.Get(*pypiURL + pkgName + "/")
        if err != nil {
                log.Println("error", r.RemoteAddr, "refresh", pkgName, err)
                http.Error(w, err.Error(), http.StatusBadGateway)
@@ -204,12 +207,14 @@ func refreshDir(
                                http.Error(w, "digest mismatch", http.StatusBadGateway)
                                return false
                        }
-                       if err = dst.Sync(); err != nil {
-                               os.Remove(dst.Name())
-                               dst.Close()
-                               log.Println("error", r.RemoteAddr, "pypi", filename, err)
-                               http.Error(w, err.Error(), http.StatusInternalServerError)
-                               return false
+                       if !NoSync {
+                               if err = dst.Sync(); err != nil {
+                                       os.Remove(dst.Name())
+                                       dst.Close()
+                                       log.Println("error", r.RemoteAddr, "pypi", filename, err)
+                                       http.Error(w, err.Error(), http.StatusInternalServerError)
+                                       return false
+                               }
                        }
                        if err = dst.Close(); err != nil {
                                log.Println("error", r.RemoteAddr, "pypi", filename, err)