Robin Farine writes:
Hi, Package: BusyBox Version: 1.0.0-pre10 When an incomplete read or write from/to a local file occurs (i.e. not an EOF condition), the tftp client prematurely exits. This problem can be reproduced by slowly piping data to the tftp client like this: (for v in 1 2 3; do echo $v; sleep 1; done) | \ tftp -p -l - -r output.txt <host> The output file on the TFTP server will contain "1". The attached patch provides a possible solution to this problem. I can reproduce this on ARM sa1110 and ARM xscale boards, both running Linux-2.6.4 & glibc-2.3.2. Thanks for the wonderful program! Robin
This commit is contained in:
parent
7f94a5caa2
commit
4872ed9737
@ -267,7 +267,7 @@ static inline int tftp(const int cmd, const struct hostent *host,
|
||||
block_nr++;
|
||||
|
||||
if (cmd_put && (opcode == TFTP_DATA)) {
|
||||
len = read(localfd, cp, tftp_bufsize - 4);
|
||||
len = bb_full_read(localfd, cp, tftp_bufsize - 4);
|
||||
|
||||
if (len < 0) {
|
||||
bb_perror_msg("read");
|
||||
@ -444,7 +444,7 @@ static inline int tftp(const int cmd, const struct hostent *host,
|
||||
|
||||
if (tmp == block_nr) {
|
||||
|
||||
len = write(localfd, &buf[4], len - 4);
|
||||
len = bb_full_write(localfd, &buf[4], len - 4);
|
||||
|
||||
if (len < 0) {
|
||||
bb_perror_msg("write");
|
||||
|
Loading…
Reference in New Issue
Block a user