Преглед изворни кода

lib/model: Leave temp file in place when final rename fails (fixes #3146)

GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/3148
Jakob Borg пре 9 година
родитељ
комит
44290a66b7
1 измењених фајлова са 3 додато и 2 уклоњено
  1. 3 2
      lib/model/rwfolder.go

+ 3 - 2
lib/model/rwfolder.go

@@ -1297,8 +1297,9 @@ func (f *rwFolder) performFinish(state *sharedPullerState) error {
 		}
 		}
 	}
 	}
 
 
-	// Replace the original content with the new one
-	if err := osutil.Rename(state.tempName, state.realName); err != nil {
+	// Replace the original content with the new one. If it didn't work,
+	// leave the temp file in place for reuse.
+	if err := osutil.TryRename(state.tempName, state.realName); err != nil {
 		return err
 		return err
 	}
 	}