mangalam-research/wed

The ajax saver issues an incorrect If-Match when there is nothing that needs matching.

Closed this issue · 1 comments

When dealing with a new file, the initial_etag passed to the Ajax saver is an empty string. Unfortunately, the saver then builds If-Match: "" from this and sends it with the next save request, which is wrong. There should not be any precondition set if initial_etag is empty.

Django 1.10 and earlier used to treat If-Match: "" as if there were no precondition. In other words, the bug in the Ajax saver did not cause any issues when Django 1.10 and earlier was used to respond to the request, and that's why the bug remained undiscovered. Django 1.11 validates If-Match differently and started causing a problem. The issue can be worked around on Django by writing a custom middleware that deletes If-Match if it has the value "".

The plan is to have this fixed in version 0.30.

Implemented. The fix will be in 0.30.