summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/couch/src/couch_file.erl2
-rwxr-xr-xapps/couch/test/etap/011-file-headers.t9
2 files changed, 9 insertions, 2 deletions
diff --git a/apps/couch/src/couch_file.erl b/apps/couch/src/couch_file.erl
index dfc1f822..1985f5eb 100644
--- a/apps/couch/src/couch_file.erl
+++ b/apps/couch/src/couch_file.erl
@@ -528,7 +528,7 @@ load_header(Fd, Block) ->
RawBin = <<RestBlock/binary, Missing/binary>>
end,
<<Md5Sig:16/binary, HeaderBin/binary>> =
- iolist_to_binary(remove_block_prefixes(1, RawBin)),
+ iolist_to_binary(remove_block_prefixes(5, RawBin)),
Md5Sig = couch_util:md5(HeaderBin),
{ok, HeaderBin}.
diff --git a/apps/couch/test/etap/011-file-headers.t b/apps/couch/test/etap/011-file-headers.t
index 4705f629..764b10df 100755
--- a/apps/couch/test/etap/011-file-headers.t
+++ b/apps/couch/test/etap/011-file-headers.t
@@ -22,7 +22,7 @@ main(_) ->
{S1, S2, S3} = now(),
random:seed(S1, S2, S3),
- etap:plan(17),
+ etap:plan(18),
case (catch test()) of
ok ->
etap:end_tests();
@@ -68,6 +68,13 @@ test() ->
etap:is({ok, Size2}, couch_file:bytes(Fd),
"Rewriting the same second header returns the same second size."),
+ couch_file:write_header(Fd, erlang:make_tuple(5000, <<"CouchDB">>)),
+ etap:is(
+ couch_file:read_header(Fd),
+ {ok, erlang:make_tuple(5000, <<"CouchDB">>)},
+ "Headers larger than the block size can be saved (COUCHDB-1319)"
+ ),
+
ok = couch_file:close(Fd),
% Now for the fun stuff. Try corrupting the second header and see