Fun with Erlang (was Re: Stand Alone Erlang for Windows. yet again)

Ulf Wiger <>
Mon Mar 19 11:24:05 CET 2001


On Sat, 17 Mar 2001, Chris Pressey wrote:

>But, I considered the peer-to-peer model for multiplayer games, and
>I concluded hacked peers open up too much of a loophole for
>cheating, leading me to stick to a pretty strict client-server
>model.

I've been thinking part time about how to address such problems.

One way would be to hack net_kernel.erl, and rpc.erl, only allowing
message passing and rpc calls that you feel are kosher.

Hacking net_kernel.erl is no picnic, but here's a place to start:

%% 
%% The spawn/4 BIF ends up here.
%% 
handle_call({spawn,M,F,A,Gleader},{From,Tag},State) when pid(From)->
    Pid = (catch spawn(M,F,A)),
    group_leader(Gleader,Pid),
    {reply,Pid,State};

%% 
%% The spawn_link/4 BIF ends up here.
%% 
handle_call({spawn_link,M,F,A,Gleader}, {From,Tag}, State)
when pid(From) ->
    catch spawn(net_kernel,do_spawn_link,[{From,Tag},M,F,A,Gleader]),
    {noreply,State};

handle_info({From,registered_send,To,Mess},State) ->
    send(From,To,Mess),
    {noreply,State};


I spent some time trying to figure out from where these messages
came. It seems as if they come from dist.c directly.

The interesting thing is that sometimes, the emulator dispatches
messages directly, while they sometimes are routed via net_kernel.
My understanding is that they come up to net_kernel only when
the distributed handshake is not quite done.

Then, hacking net_kernel doesn't solve anything. A pity.

/Uffe
-- 
Ulf Wiger                                    tfn: +46  8 719 81 95
Senior System Architect                      mob: +46 70 519 81 95
Strategic Product & System Management    ATM Multiservice Networks
Data Backbone & Optical Services Division      Ericsson Telecom AB




More information about the erlang-questions mailing list