<div dir="ltr">2008/9/12 Michael Regen <span dir="ltr"><<a href="mailto:michael.regen@gmail.com">michael.regen@gmail.com</a>></span><br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div dir="ltr">Hi,<br><br>I think there are a couple of problems with the documentation of the EPMD protocol at <a href="http://erlang.org/doc/apps/erts/erl_dist_protocol.html#9.1" target="_blank">http://erlang.org/doc/apps/erts/erl_dist_protocol.html#9.1</a> (in R12B-3 and R12B-4) as well as erts/emulator/internal_doc/erl_ext_dist.txt (in R12B-3):<br>

</div></blockquote><div><br>Thanks!<br><br>The document should need much more work, but for R12B-5 I have corrected the most glaring errors that you pointed out.<br><br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div dir="ltr"><br>* ALIVE2_REQ:<br>DistrvsnRange is 4 bytes, not 2. "Four bytes where MSB (2 bytes) = Highestvsn and LSB (2 bytes) = Lowestvsn. For erts-4.6.x (OTP-R3)the vsn = 0 For erts-4.7.x (OTP-R4) = ?????."<br>
</div></blockquote><div><br>Corrected.<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div dir="ltr"><br>* PORT2_RESP:<br>
Elen is described as 2 byte field. But at least if during ALIVE2_REQ no extra field was provided (as I think erts usually does) then PORT2_RESP just returns Elen as one byte = 0. And erts does not seem to work correctly if we send back a packet as specified.<br>

</div></blockquote><div><br>The version number fields had the wrong size. Corrected.<br><br>The Erlang system ignores the name field and everything following it. That Elen is shorter seems to be because of a bug in EPMD that has not<br>
been noticed (because it is harmless because the Erlang system doesn't care anyway).<br><br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div dir="ltr"><br>* NAMES_RESP:<br>In the documentation it looks like one packet should be sent back containing the whole answer whereas in reality EPMDPortNo and each answer are sent back in different packets.<br></div>
</blockquote><div><br>TCP/IP is stream-oriented and has no packets, so the documentation is correct.<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div dir="ltr"><br>* DUMP_RESP:<br>Same as for NAMES_RESP: different packets are expected.</div></blockquote><div><br>Same answer as for NAMES_RESP.<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div dir="ltr"><br>
Furthermore the documentation speficies NodeInfo as expressed in Erlang: <br>io:format("active name     ~s at port ~p, fd = ~p ~n", [NodeName, Port, Fd]).<br>for registered nodes. Correct would be:<br>io:format("active name     <~s> at port ~p, fd = ~p~n", [NodeName, Port, Fd]).<br>

Notice the <> characters!<br></div></blockquote><div><br>The documentation should really document the binary format, so I see no point in changing this.<br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div dir="ltr"><br>For unregistered nodes:<br>io:format("old/unused name ~s at port ~p, fd = ~p~n", [NodeName, Port, Fd]).<br>io:format("old/unused name <~s>, port = ~p, fd = ~p ~n", [NodeName, Port, Fd]).<br>

Notice the <> characters as well as the last space before the new line!<br><br>Furthermore it might be good to mention that all answers are followed by a close of the socket except for ALIVE2_RESP. </div></blockquote>
<div><br>I added a note about that to the description of PORT2_RESP.<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div dir="ltr">
Might also be good to mention that all integers are in big-endian format.<br>
</div></blockquote><div><br></div></div>I have done that.<br><br>/Bjorn<br>-- <br>Björn Gustavsson, Erlang/OTP, Ericsson AB<br>
</div>