diff options
Diffstat (limited to 'libexec')
-rw-r--r-- | libexec/ftpd/ftpd.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/libexec/ftpd/ftpd.c b/libexec/ftpd/ftpd.c index 90373c6..f2aef51 100644 --- a/libexec/ftpd/ftpd.c +++ b/libexec/ftpd/ftpd.c @@ -2038,6 +2038,7 @@ send_data(FILE *instr, FILE *outstr, off_t blksize, off_t filesize, int isreg) if (isreg) { + char *msg = "Transfer complete."; off_t offset; int err; @@ -2062,10 +2063,20 @@ send_data(FILE *instr, FILE *outstr, off_t blksize, off_t filesize, int isreg) goto data_err; } + + /* + * We hit the EOF prematurely. + * Perhaps the file was externally truncated. + */ + if (cnt == 0) { + msg = "Transfer finished due to " + "premature end of file."; + break; + } } transflag = 0; - reply(226, "Transfer complete."); + reply(226, msg); return (0); } |