From Bugzilla Helper: User-Agent: Mozilla/4.77 [en] (X11; U; Linux 2.4.7 i686) Description of problem: tftp would get an ACK from my Cisco router, but drop out of the loop before it sent any data. The problem is the size variable, which is the size of the WRQ during firsttrip, not how many octets were read from file. Version-Release number of selected component (if applicable): How reproducible: Always Steps to Reproduce: 1. Start tftp 2. Connect to Cisco 677i router 3. put some file Additional info: I fixed it by setting size = SEGSIZE when firsttrip in tftp.c:sendfile() if (firsttrip) { firsttrip = 0; + size = SEGSIZE; } else { amount += size; } (I really can't understand how this bug could live this long, it must be something about the tftp server people usually talk to.)
> I really can't understand how this bug could live this long I think netkit must not have any MAINTAINERS. I just wasted a day tracking this bug in the netkit-0.17 tftp.c sendfile() down. The /usr/bin/tftp in RedHat 7.1 is plain broken. The rh7.1 tftp comes from the netkit-tftp-0.17 package, not the gnu inetutils package. Diffing the two leads me to believe that the netkit tftp was derived from a previous version of gnu inetutils or they had a common ancestor. The netkit tftp has lots of extra cruft, some of which comes from a person who does not understand the C language very well. This person must never have tested his tftp.c sendfile() change because it could never have worked. The behavior is to send the WRQ (send file) request, get the ack, then exit, never sending any data.
The setsegsize patch is in the RHL 7.2 tftp, I believe. Please give it a try.