Resume activity newsince when acking our own message

This commit is contained in:
Jeremy Lakeman 2017-05-10 15:21:21 +09:30
parent 576e95e2cd
commit 9b7d8bfa23
2 changed files with 10 additions and 2 deletions

View File

@ -82,7 +82,7 @@ static int activity_next_ack(struct meshmb_activity_iterator *i){
}
}
if (memcmp(&i->msg_reader.bundle_id, bundle_id, sizeof *bundle_id)==0){
if (cmp_rhizome_bid_t(&i->msg_reader.bundle_id, bundle_id)==0){
// shortcut for consecutive acks for the same incoming feed
DEBUGF(meshmb, "Ply still open @%"PRIu64, i->msg_reader.read.offset);
}else{
@ -187,6 +187,9 @@ static int finish_ack_writing(struct meshmb_feeds *feeds){
rhizome_manifest_free(feeds->ack_manifest);
feeds->ack_manifest = NULL;
if (!feeds->dirty)
feeds->generation++;
return ret;
}
@ -353,6 +356,8 @@ int meshmb_bundle_update(struct meshmb_feeds *feeds, rhizome_manifest *m, struct
}
return 1;
}
if (cmp_rhizome_bid_t(&m->keypair.public_key, &feeds->ack_bundle_keypair.public_key)==0)
return 1;
return 0;
}

View File

@ -288,11 +288,13 @@ test_MeshMBRestNewActivity() {
executeOk_servald meshmb send $IDA3 "Message 4"
executeOk_servald meshmb send $IDA2 "Message 5"
executeOk_servald meshmb send $IDA3 "Message 6"
executeOk_servald meshmb send $IDA1 "Message 7"
for i in 1 2 3; do
wait_until grep "Message 3" newsince$i.json
wait_until grep "Message 4" newsince$i.json
wait_until grep "Message 5" newsince$i.json
wait_until grep "Message 6" newsince$i.json
wait_until grep "Message 7" newsince$i.json
done
fork_terminate_all
fork_wait_all
@ -305,11 +307,12 @@ test_MeshMBRestNewActivity() {
tfw_preserve newsince$i.json objects$i.json
done
for i in 1 2 3; do
assert [ "$(jq '.rows | length' newsince$i.json)" = 4 ]
assert [ "$(jq '.rows | length' newsince$i.json)" = 5 ]
assertJq objects$i.json "contains([{ id: \"$IDA2\", author: \"$SIDA2\", name: \"Feed B\", message: \"Message 3\"}])"
assertJq objects$i.json "contains([{ id: \"$IDA3\", author: \"$SIDA3\", name: \"Feed C\", message: \"Message 4\"}])"
assertJq objects$i.json "contains([{ id: \"$IDA2\", author: \"$SIDA2\", name: \"Feed B\", message: \"Message 5\"}])"
assertJq objects$i.json "contains([{ id: \"$IDA3\", author: \"$SIDA3\", name: \"Feed C\", message: \"Message 6\"}])"
assertJq objects$i.json "contains([{ id: \"$IDA1\", author: \"$SIDA1\", name: \"Feed A\", message: \"Message 7\"}])"
done
}