net_adm:names() failing
Vance Shipley
vances@REDACTED
Mon Oct 4 00:56:13 CEST 1999
Magnus,
Unfortunately this patch didn't seem to have any effect. :(
-Vance
} -----Original Message-----
} From: owner-erlang-questions@REDACTED
} [mailto:owner-erlang-questions@REDACTED]On Behalf Of Magnus Fr berg
} Sent: Friday, October 01, 1999 2:55 AM
} To: Vance Shipley
} Cc: erlang-questions@REDACTED
} Subject: Re: net_adm:names() failing
}
}
} Hi !
}
} Vance Shipley wrote:
} >
} > I seem to be having some problems with tcp on my Unixware
} > port. I believe that I'm loosing messages when the socket
} > gets closed. Anybody have any ideas?
}
} I noticed the same some time ago (I think it was on SUSE linux) and made
} some changes to erl_epmd.erl. Seems like it was after the latest open
} source release though.
}
} >
} > On my Unixware port I have a problem with net_adm:names()
} > returning {ok, []} at all times (not just using short host
} > names as I reported before).
} >
} > Some debugging shows that in the module erl_epmd, in the
} > function do_get_names, the socket seems to be getting closed
} > before the return message is received. In the receive loop
} > the {tcp, Socket, [P0,P1,P2,P3|T]} never gets called, just
} > the {tcp_closed, Socket}.
} >
}
} The problem is that we cant be sure about that the 4 bytes port header
} arrives in the same tcp package. I send a fix I made right now (I
} compiled it and it seems to work ok for me;-).
}
} erl_epmd.erl:
}
} do_get_names(Socket) ->
} inet_tcp:send(Socket, [?int16(1),?EPMD_NAMES]),
} do_get_names(Socket, []).
}
} do_get_names(Socket, PList) ->
} receive
} {tcp, Socket, Bytes} ->
} case get_port(Bytes, PList) of
} {ok, ?erlang_daemon_port, T} ->
} names_loop(Socket, T, []);
} {more, PList1} ->
} do_get_names(Socket, PList1);
} _ ->
} close(Socket),
} {error, address}
} end;
} {tcp_closed, Socket} ->
} {ok, []}
} end.
}
} get_port(Bytes, [P0,P1,P2,P3]) ->
} {ok, ?u32(P0,P1,P2,P3), Bytes};
} get_port([H|Bytes], PList) ->
} get_port(Bytes, PList ++ [H]);
} get_port([], PList) ->
} {more, PList}.
}
} Hope this was your case as well.
}
} /Magnus
}
More information about the erlang-questions
mailing list