net_adm:names failing (still)

Vance Shipley vances@REDACTED
Thu Dec 2 03:54:34 CET 1999


Unfortunately the newest release doesn't solve my problem
with net_adm:names() failing under Unixware.  :(

It's the strangest thing.  The epmd server on the Unixware
machine can dish out responses to WinNT, Solaris, etc.
but the Unixware client side can't get answers from any of
these machines.

To debug I changed erl_epmd.erl as:

do_get_names(Socket) ->
    inet_tcp:send(Socket, [?int16(1),?EPMD_NAMES]),
    receive
%       {tcp, Socket, [P0,P1,P2,P3|T]} ->
%           EpmdPort = ?u32(P0,P1,P2,P3),
%           if EpmdPort == ?erlang_daemon_port ->
%                   names_loop(Socket, T, []);
%              true ->
%                   close(Socket),
%                   {error, address}
%           end;
%       {tcp_closed, Socket} ->
%           {ok, []}
        Stuff ->
            Stuff
    end.


Now I get tcp_closed consistantly:

(foo@REDACTED)1> net_adm:names().                                    
{tcp_closed,{socket,<0.42.0>,#Port<0.13>,inet_tcp}}

The really strange thing is that I can make it work by 
putting a sleep(1) into the epmd server after it sends
the response.

I've been banging my head against the desk for quite some
time but I can't see where this is going wrong.

Any ideas?

	-Vance



More information about the erlang-questions mailing list