🐛 concurrent del user & adding log entry would allow a ghost log to be made

This commit is contained in:
EntireTwix 2021-04-21 21:42:30 -07:00
parent 7d38974ba0
commit 417f52253b

View file

@ -128,18 +128,22 @@ public:
Transaction temp(a_name, b_name, amount); Transaction temp(a_name, b_name, amount);
Transaction temp2(a_name, b_name, amount); Transaction temp2(a_name, b_name, amount);
if (logs.try_emplace_l(a_name, [&temp](Log &l) { l.AddTrans(std::move(temp)); })) users.if_contains(a_name, [&temp, &a_name](const User &u) {
{ if (logs.try_emplace_l(a_name, [&temp](Log &l) { l.AddTrans(std::move(temp)); }))
logs.modify_if(a_name, [&temp](Log &l) { {
l.AddTrans(std::move(temp)); logs.modify_if(a_name, [&temp](Log &l) {
}); l.AddTrans(std::move(temp));
} });
if (logs.try_emplace_l(b_name, [&temp2](Log &l) { l.AddTrans(std::move(temp2)); })) }
{ });
logs.modify_if(b_name, [&temp2](Log &l) { users.if_contains(a_name, [&temp, &a_name](const User &u) {
l.AddTrans(std::move(temp2)); if (logs.try_emplace_l(b_name, [&temp2](Log &l) { l.AddTrans(std::move(temp2)); }))
}); {
} logs.modify_if(b_name, [&temp2](Log &l) {
l.AddTrans(std::move(temp2));
});
}
});
} }
return state; return state;