X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=upload.go;h=cd98df5ba5954db50c2889393c882c3b77be4994;hb=37facf3dde161d2df4d430896dc87ebb5740cc64;hp=6a5e9bda003abb7ca15a842bbf39f17b697bad80;hpb=5f74f27dba4c477281305586ef96a39b4751851e;p=gocheese.git diff --git a/upload.go b/upload.go index 6a5e9bd..cd98df5 100644 --- a/upload.go +++ b/upload.go @@ -1,7 +1,7 @@ /* GoCheese -- Python private package repository and caching proxy -Copyright (C) 2019 Sergey Matveev - 2019 Elena Balakhonova +Copyright (C) 2019-2021 Sergey Matveev + 2019-2021 Elena Balakhonova This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -39,7 +39,9 @@ func serveUpload(w http.ResponseWriter, r *http.Request) { http.Error(w, "unauthenticated", http.StatusUnauthorized) return } - auther, ok := passwords[username] + PasswordsM.RLock() + auther, ok := Passwords[username] + PasswordsM.RUnlock() if !ok || !auther.Auth(password) { log.Println(r.RemoteAddr, "unauthenticated", username) http.Error(w, "unauthenticated", http.StatusUnauthorized) @@ -119,12 +121,14 @@ func serveUpload(w http.ResponseWriter, r *http.Request) { http.Error(w, err.Error(), http.StatusInternalServerError) return } - if err = dst.Sync(); err != nil { - log.Println("error", r.RemoteAddr, filename, err) - os.Remove(dst.Name()) - dst.Close() - http.Error(w, err.Error(), http.StatusInternalServerError) - return + if !NoSync { + if err = dst.Sync(); err != nil { + log.Println("error", r.RemoteAddr, filename, err) + os.Remove(dst.Name()) + dst.Close() + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } } dst.Close() digest := hasher.Sum(nil)