Consider the following code. Process 1 remoteExecs a function on process 2, which reports the value of remoteExecutedOwner in process 2's UI. Process 2 then remoteExecs back to process 1 to again report the value of remoteExecutedOwner in process 1's UI.
The net result is that process 2 outputs "Receive from P1" and process 1 outputs "Response from P2".
LocalFunction = { systemchat format ["Response from %1", remoteExecutedOwner]; }; private _remoteFunction = { systemchat format ["Receive from %1", remoteExecutedOwner]; [] remoteExec ["LocalFunction", remoteExecutedOwner]; }; [[], _remoteFunction] remoteExec ["call", 2];
As shown, the code calls to the server (2).
If this code is run with the target process being the server or another client, remoteExecutedOwner produces the expected values. For example, client 3 calls client 4, client 4 will show "Receive from 3", and client 3 will show "Response from 4".
If this code is run with the target process being a headless client, when the sequence returns to the original caller, remoteExecutedOwner always reports 0. That is, if client 4 is a headless client, client 4 will show "Receive from 3", and client 3 will show "Response from 0".
The expected value is "Response from 4".