fix cross device rename

This commit is contained in:
Michael Yang 2023-11-17 15:21:57 -08:00
parent a185b29719
commit c6e6c8ee7e

View file

@ -666,8 +666,14 @@ func HeadBlobHandler(c *gin.Context) {
} }
func CreateBlobHandler(c *gin.Context) { func CreateBlobHandler(c *gin.Context) {
targetPath, err := GetBlobsPath(c.Param("digest"))
if err != nil {
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
hash := sha256.New() hash := sha256.New()
temp, err := os.CreateTemp("", c.Param("digest")) temp, err := os.CreateTemp(filepath.Dir(targetPath), c.Param("digest"))
if err != nil { if err != nil {
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return return
@ -690,12 +696,6 @@ func CreateBlobHandler(c *gin.Context) {
return return
} }
targetPath, err := GetBlobsPath(c.Param("digest"))
if err != nil {
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
if err := os.Rename(temp.Name(), targetPath); err != nil { if err := os.Rename(temp.Name(), targetPath); err != nil {
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return return