summaryrefslogtreecommitdiff
path: root/src/storage.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/storage.erl')
-rw-r--r--src/storage.erl12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/storage.erl b/src/storage.erl
index e208d9b..5774f2a 100644
--- a/src/storage.erl
+++ b/src/storage.erl
@@ -30,8 +30,16 @@ request(post, "ct/storage/entrycommitted", Input) ->
success({[{result, <<"ok">>}]})
end;
request(get, "ct/storage/fetchnewentries", _Input) ->
- NewHashes = storagedb:fetchnewhashes(0),
- % XXX send only hashes, implement getentry
+ {LastIndexOrZero, LastHash} = storagedb:lastverifiednewentry(),
+ LastVerifiedAndNewHashes = storagedb:fetchnewhashes(LastIndexOrZero),
+ NewHashes = case {LastHash, LastVerifiedAndNewHashes} of
+ {none, LastVerifiedAndNewHashes} ->
+ LastVerifiedAndNewHashes;
+ {Hash1, [Hash2|Rest]} when Hash1 == Hash2 ->
+ Rest;
+ _ ->
+ exit({internalerror, "Incorrect lastverifiedentry"})
+ end,
Entries = lists:map(fun(LeafHash) ->
base64:encode(LeafHash)
end, NewHashes),