@@ -136,24 +136,17 @@ waiting_for_data(info, {Driver,Socket,Data},
136136 ? ORDERED_CAST (M , F , A ) ->
137137 handle_cast (M , F , A , true , State ),
138138 {keep_state_and_data , gen_rpc_helper :get_inactivity_timeout (? MODULE )};
139+ ? ABCAST (N , M ) ->
140+ handle_abcast (N , M , State ),
141+ {keep_state_and_data , gen_rpc_helper :get_inactivity_timeout (? MODULE )};
139142 BatchCast when is_list (BatchCast ) ->
140143 lists :foreach (fun (? CAST (M , F , A )) -> handle_cast (M , F , A , false , State );
141144 (? ORDERED_CAST (M , F , A )) -> handle_cast (M , F , A , true , State );
145+ (? ABCAST (N , M )) -> handle_abcast (N , M , State );
142146 (Invalid ) -> ? tp (error , gen_rpc_invalid_batch , #{socket => gen_rpc_helper :socket_to_string (Socket ), data => Invalid })
143147 end ,
144148 BatchCast ),
145149 {keep_state_and_data , gen_rpc_helper :get_inactivity_timeout (? MODULE )};
146- {abcast , Name , Msg } ->
147- _Result = case check_if_module_allowed (erlang , Control , List ) of
148- true ->
149- ? log (debug , " event=abcast_received driver=~s socket=\" ~s \" peer=\" ~s \" process=~s message=\" ~p \" " ,
150- [Driver , gen_rpc_helper :socket_to_string (Socket ), gen_rpc_helper :peer_to_string (Peer ), Name , Msg ]),
151- Msg = erlang :send (Name , Msg );
152- false ->
153- ? log (debug , " event=request_not_allowed driver=~s socket=\" ~s \" control=~s method=~s " ,
154- [Driver , gen_rpc_helper :socket_to_string (Socket ), Control , abcast ])
155- end ,
156- {keep_state_and_data , gen_rpc_helper :get_inactivity_timeout (? MODULE )};
157150 {sbcast , Name , Msg , Caller } ->
158151 Reply = case check_if_module_allowed (erlang , Control , List ) of
159152 true ->
@@ -350,6 +343,17 @@ handle_cast(M, F, A, Ordered, #state{socket=Socket, driver=Driver, peer=Peer, co
350343 ? log (debug , " event=request_not_allowed driver=~s socket=\" ~s \" control=~s method=cast module=~s " ,[Driver , gen_rpc_helper :socket_to_string (Socket ), Control , RealM ])
351344 end .
352345
346+ handle_abcast (Name , Msg , # state {socket = Socket , driver = Driver , peer = Peer , control = Control , list = List }) ->
347+ case check_if_module_allowed (erlang , Control , List ) of
348+ true ->
349+ ? log (debug , " event=abcast_received driver=~s socket=\" ~s \" peer=\" ~s \" process=~s message=\" ~p \" " ,
350+ [Driver , gen_rpc_helper :socket_to_string (Socket ), gen_rpc_helper :peer_to_string (Peer ), Name , Msg ]),
351+ Msg = erlang :send ({Name , node ()}, Msg );
352+ false ->
353+ ? log (debug , " event=request_not_allowed driver=~s socket=\" ~s \" control=~s method=~s " ,
354+ [Driver , gen_rpc_helper :socket_to_string (Socket ), Control , abcast ])
355+ end .
356+
353357exec_cast (M , F , A , _PreserveOrder = true ) ->
354358 {Pid , MRef } = erlang :spawn_monitor (M , F , A ),
355359 receive
0 commit comments