<div dir="ltr"><font color="#3366ff" face="tahoma, sans-serif">Hello list,</font><div><font color="#3366ff" face="tahoma, sans-serif"><br></font></div><div><font color="#3366ff" face="tahoma, sans-serif">In one of my application, I start a restricted shell as a slave node, using a callback module as follow:</font></div>

<div><br></div><div style><font color="#3366ff" face="tahoma, sans-serif">The callback module, for example, returns {false, State} for gen_event:start/0 function to prevent that to be run. When tested in an actual restricted shell, it is prevented as expected:</font></div>

<div style><font color="#3366ff" face="tahoma, sans-serif"><br></font></div><div style><font color="#3366ff" face="tahoma, sans-serif"><div>smba:eggs esente$ erl -pa apps/*/ebin -stdlib restricted_shell shell_callback</div>

<div>Erlang R15B02 (erts-5.9.2) [source] [64-bit] [smp:4:4] [async-threads:0] [hipe] [kernel-poll:false] [dtrace]</div><div><br></div><div>Restricted Eshell V5.9.2  (abort with ^G)</div><div>1> gen_event:start().</div>

<div>** exception exit: restricted shell does not allow gen_event:start()</div><div>2> </div><div><br></div><div style>However, when used in my app by making a call to the remote restricted shell using rpc:call/4, the call went through:</div>

<div style><br></div><div style><div>Args = "-stdlib restricted_shell editor_shell",</div><div>{ok, Node} = slave:start_link(smba, editor, Args),</div></div></font></div>
<div><font color="#3366ff" face="tahoma, sans-serif">{ok, Entity} = rpc:call(Node, gen_event, start, []),</font></div><div><font color="#3366ff" face="tahoma, sans-serif"><br></font></div><div style><font color="#3366ff" face="tahoma, sans-serif">It returns Entity as a pid().</font></div>

<div style><font color="#3366ff" face="tahoma, sans-serif"><br></font></div><div style><font color="#3366ff" face="tahoma, sans-serif">I understand that the callback functions cannot be used to allow or disallow execution of functions called from compiled code, but only functions called from expressions entered at the shell prompt.</font></div>

<div style><font color="#3366ff" face="tahoma, sans-serif"><br></font></div><div style><font color="#3366ff" face="tahoma, sans-serif">I would like to confirm that rpc:call/4 does not enter the call into the remote shell, but doing some stuffs to run the call directly.<br>

</font><br>
</div></div>