When a message is shared, share its transitive dependencies

Like other recursive operations on the dependency graph, this is
not done in a single transaction to prevent an attacker from creating
arbitrary large transactions.

So at startup, the `ValidationManager` finds and resumes any
unfinished operations, by looking for shared messages with unshared
dependencies.
This commit is contained in:
Torsten Grote
2016-08-31 13:15:59 -03:00
parent 7a0db798d1
commit d058172429
19 changed files with 480 additions and 76 deletions

View File

@@ -93,7 +93,7 @@ class MessagingManagerImpl extends BdfIncomingMessageHook
}
@Override
protected void incomingMessage(Transaction txn, Message m, BdfList body,
protected boolean incomingMessage(Transaction txn, Message m, BdfList body,
BdfDictionary meta) throws DbException, FormatException {
GroupId groupId = m.getGroupId();
@@ -106,6 +106,9 @@ class MessagingManagerImpl extends BdfIncomingMessageHook
PrivateMessageReceivedEvent event = new PrivateMessageReceivedEvent(
header, groupId);
txn.attach(event);
// don't share message
return false;
}
@Override