<div dir="ltr">Unfortunately, RFC 1350 - The TFTP Protocol (Revision 2) - does not address this issue. Nevertheless, based on TFTP's initial connection protocol and its relation to the underlying protocols, the Erlang/OTP TFTP client behaviour seems to be sensible in this case.<br>
<br><div>According to the initial connection protocol, which is used to establish a "pseudo" connection between the client and the server, the client sends its first datagram to the server's well-known port (69). The server sends its p<span class="" style="font-family:sans-serif;font-size:13px;line-height:19px;color:rgb(0,0,0)">acket (here: ACK) from a freshly allocated ephemeral port, and all future packets to the server should be sent to this port.</span> Consequently, if the server decides to allocate that port on a different host, then it seems sensible that the client uses the server's unique socket 3-tuple (protocol, ip-address, port) for all future packets to that server. </div>
<div><br></div><div>In short, there are no plans to change the current TFTP client behaviour, unless further information is provided, which indicates that a different behaviour would be more appropriate.</div><div><br><div>
Andreas Schumacher, Erlang/OTP, Ericsson AB<br><div><br><div class="gmail_quote"><br>
-----Original Message-----<br>
From: <a href="mailto:erlang-bugs-bounces@erlang.org">erlang-bugs-bounces@erlang.org</a> [mailto:<a href="mailto:erlang-bugs-bounces@erlang.org">erlang-bugs-bounces@erlang.org</a>] On Behalf Of Stefan Zegenhagen<br>
Sent: den 5 mars 2014 16:53<br>
To: <a href="mailto:erlang-bugs@erlang.org">erlang-bugs@erlang.org</a><br>
Subject: [erlang-bugs] Bug in TFTP client implementation?<br>
<br>
Dear all,<br>
<br>
There might be a bug in erlang's TFTP client implementation that prevents erlang to successfully transfer files over IPv6 with many<br>
Microsoft(R) Windows TFTP servers.<br>
<br>
Those TFTP servers (most of them are available free of charge) are capable to bind to a single IP address only, not to an interface. The problem arises when the server has statically configured IPv6 addresses as well as automatically configured ones. Here's the step-by-step error<br>

description:<br>
<br>
     1. start the Windows TFTP server and bind to the static IPv6 server<br>
        address<br>
     2. call tftp:read_file(...) to download a file from the TFTP server<br>
        using the static IPv6 server address<br>
     3. transmission of packets is as follows:<br>
<br>
<client IPv6> => <static server IPv6> : Write Request <dynamic server IPv6> => <client IPv6> : Ack, Port #xxxx<br>
<br>
<client IPv6> => <dynamic IPv6>:xxxx : Data block=0<br>
<br>
It appears that the TFTP servers are unwilling (or unable) to respond from the IPv6 address they have been contacted at.<br>
<br>
Furthermore it seems that the erlang TFTP client uses the source IPv6 of the received Ack packet in all further communication. Since the TFTP server is not listening to its dynamic IPv6 address (from which it always responds, though), the data blocks transmitted after the initial successful "connection establishment" are never received by the TFTP server.<br>

<br>
I agree that the TFTP server should respond from the IPv6 address it was contacted at. However, I also think it to be a questionable behaviour to change to a different IP address for the actual data transfer.<br>
<br>
<br>
<br>
Kind regards,<br>
<br>
--<br>
Dr. Stefan Zegenhagen<br>
<br>
arcutronix GmbH<br>
Garbsener Landstr. 10<br>
30419 Hannover<br>
Germany<br>
<br>
Tel:   +49 511 277-2734<br>
Fax:   +49 511 277-2709<br>
Email: <a href="mailto:stefan.zegenhagen@arcutronix.com">stefan.zegenhagen@arcutronix.com</a><br>
Web:   <a href="http://www.arcutronix.com" target="_blank">www.arcutronix.com</a><br>
<br>
*Synchronize the Ethernet*<br>
<br>
General Managers: Dipl. Ing. Juergen Schroeder, Dr. Josef Gfrerer - Legal Form: GmbH, Registered office: Hannover, HRB 202442, Amtsgericht Hannover; Ust-Id: DE257551767.<br>
<br>
Please consider the environment before printing this message.<br>
<br>
_______________________________________________<br>
erlang-bugs mailing list<br>
<a href="mailto:erlang-bugs@erlang.org">erlang-bugs@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-bugs" target="_blank">http://erlang.org/mailman/listinfo/erlang-bugs</a><br>
</div><br></div></div></div></div>