diff options
Diffstat (limited to 'src/storage.erl')
-rw-r--r-- | src/storage.erl | 12 |
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), |