jcoglan / restore

Simple remoteStorage server written in Node.js
293 stars 27 forks source link

Inconsistency in etag calculation #37

Open untitaker opened 8 years ago

untitaker commented 8 years ago

I guess this issue doesn't always show up because the file has to be PUT at a second (or millisecond?) boundary, otherwise there's no difference between the mtime of the meta file and the mtime of the data file. However, you can test it by touching either meta files or data files.

The following patch fixes this:

diff --git a/lib/stores/file_tree.js b/lib/stores/file_tree.js
index 465f9ce..abb3b6c 100644
--- a/lib/stores/file_tree.js
+++ b/lib/stores/file_tree.js
@@ -184,7 +184,7 @@ FileTree.prototype.get = function(username, path, version, callback) {
       });
     } else {
       self.readFile(dataPath, function(error, blob, modified) {
-        self.readFile(metaPath, function(error, json, modified) {
+        self.readFile(metaPath, function(error, json, _) {
           if (error) {
             release();
             return callback(null, null);

I'll open a PR if you agree with the change @jcoglan

peacekeeper commented 8 years ago

Sometimes when i use http://litewrite.net/ with restore 0.3.0 and access via two browser simultaneously, i end up getting an endless stream of 412 errors, until i close and re-open the browser. wondering if this is related to this issue.

untitaker commented 8 years ago

Possibly, if it's not a bug in the client.

untitaker commented 8 years ago

I've been starting a fork of restore at https://github.com/untitaker/morestore, which contains a bugfix for this.