[tftp] Temporary fix for conveying TFTP block size to callers
authorMichael Brown <mcb30@etherboot.org>
Tue, 27 Jan 2009 15:47:00 +0000 (15:47 +0000)
committerMichael Brown <mcb30@etherboot.org>
Tue, 27 Jan 2009 15:47:00 +0000 (15:47 +0000)
commit1284773363034e3afaf6d55b983e5aeeff44d59c
tree875425b07042a5ace82f3803289ac653afd50014
parent027c72e0d0e2456ce5fbf7d5284f8ca7d3c94ade
[tftp] Temporary fix for conveying TFTP block size to callers

pxe_tftp.c assumes that the first seek on its data-transfer interface
represents the block size.  Apart from being an ugly hack, this will
also screw up file size calculation for files smaller than one block.

The proper solution would be to extend the data-transfer interface to
support the reporting of stat()-like data.  This is not going to
happen until the cost of adding interface methods is reduced (a fix I
have planned since June 2008).

In the meantime, abuse the xfer_window() method to return the block
size, since it is not being used for anything else and is vaguely
justifiable.

Astonishingly, having returned the incorrect TFTP blocksize via
PXENV_TFTP_OPEN for almost a year seems not to have affected any of
the test cases run during that time; this bug was found only when
someone tried running the heavily-patched version of pxegrub found in
OpenSolaris.
src/arch/i386/interface/pxe/pxe_tftp.c
src/net/udp/tftp.c