Use page.sha instead of a content-based hash for collision detection.

This commit is contained in:
Bart Kamphorst
2018-11-19 12:58:30 +01:00
parent d4a9da0db5
commit efd1d3992d
+3 -3
View File
@@ -176,7 +176,7 @@ module Precious
@page = page
@page.version = wiki.repo.log(wiki.ref, @page.path).first
@content = page.text_data
@etag = Digest::SHA1.hexdigest(@content)
@etag = page.sha
mustache :edit
else
redirect_to("/create/#{encodeURIComponent(@name)}")
@@ -279,14 +279,14 @@ module Precious
end
post '/edit/*' do
etag = params[:etag]
etag = params[:etag]
path = "/#{clean_url(sanitize_empty_params(params[:path]))}"
page_name = CGI.unescape(params[:page])
wiki = wiki_new
page = wiki.paged(page_name, path, exact = true)
return if page.nil?
if etag != Digest::SHA1.hexdigest(page.text_data)
if etag != page.sha
halt 412, 'For future use: some helpful data for resolving the conflict here.'
end