diff --git a/include/ircd/m/vm.h b/include/ircd/m/vm.h index 23afb2afa..8c1e21d4a 100644 --- a/include/ircd/m/vm.h +++ b/include/ircd/m/vm.h @@ -154,6 +154,9 @@ struct ircd::m::vm::opts /// The mxid of the user which is conducting this eval. string_view user_id; + /// The txnid from the node conducting the eval. + string_view txn_id; + /// Call conform hooks (detailed behavior can be tweaked below) bool conform {true}; diff --git a/modules/federation/send.cc b/modules/federation/send.cc index 0e1d4d4a0..43ee4be2d 100644 --- a/modules/federation/send.cc +++ b/modules/federation/send.cc @@ -48,6 +48,7 @@ handle_edu(client &client, m::vm::opts vmopts; vmopts.node_id = request.origin; + vmopts.txn_id = txn_id; vmopts.edu = true; vmopts.notify_clients = false; vmopts.notify_servers = false; @@ -69,6 +70,7 @@ handle_pdus(client &client, vmopts.nothrows = -1U; vmopts.nothrows &= ~m::vm::fault::INTERRUPT; vmopts.node_id = request.origin; + vmopts.txn_id = txn_id; vmopts.fetch_state = false; m::vm::eval eval {