summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Newson <rnewson@apache.org>2023-05-06 14:36:38 +0100
committerRobert Newson <rnewson@apache.org>2023-05-06 14:36:57 +0100
commitf16953b26414f915b0d400f62cde1dfdd6f3c50c (patch)
tree253dce1c2b7af50257182405e5690c49ec199ae7
parent2663bdc6bf3d7c512d6296026c11ef9d9f3c9465 (diff)
downloadcouchdb-f16953b26414f915b0d400f62cde1dfdd6f3c50c.tar.gz
make legacy checksums a compile-time option
-rw-r--r--src/couch/src/couch_file.erl16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/couch/src/couch_file.erl b/src/couch/src/couch_file.erl
index 315f3a795..0a9aaf49c 100644
--- a/src/couch/src/couch_file.erl
+++ b/src/couch/src/couch_file.erl
@@ -864,11 +864,11 @@ verify_checksum(Fd, Pos, IoList, Checksum) ->
verify_checksum(Data, ExpectedChecksum) ->
Bin = iolist_to_binary(Data),
- case ExpectedChecksum == exxhash:xxhash128(Bin) of
+ case ExpectedChecksum == checksum(Bin) of
true ->
true;
false ->
- case ExpectedChecksum == couch_hash:md5_hash(Data) of
+ case ExpectedChecksum == legacy_checksum(Data) of
true ->
couch_stats:increment_counter([couch_file, old_checksums]),
true;
@@ -877,6 +877,18 @@ verify_checksum(Data, ExpectedChecksum) ->
end
end.
+checksum(Bin) when is_binary(Bin) ->
+ exxhash:xxhash128(Bin).
+
+-ifdef(NO_MD5).
+legacy_checksum(Bin) when is_binary(Bin) ->
+ true.
+-else.
+legacy_checksum(Bin) when is_binary(Bin) ->
+ couch_hash:md5_hash(Bin).
+-endif.
+
+
report_checksum_error(Fd, Pos) ->
couch_log:emergency("File corruption in ~p at position ~B", [Fd, Pos]),
exit({file_corruption, <<"file corruption">>}).