diff --git a/appl/ftp/ftpd/ftpd.c b/appl/ftp/ftpd/ftpd.c index fe1064c06..154a92729 100644 --- a/appl/ftp/ftpd/ftpd.c +++ b/appl/ftp/ftpd/ftpd.c @@ -312,6 +312,11 @@ main(int argc, char **argv) defumask = val; } } + sp = getservbyname("ftp", "tcp"); + if(sp) + port = sp->s_port; + else + port = htons(21); if(port_string) { sp = getservbyname(port_string, "tcp"); if(sp) @@ -321,12 +326,6 @@ main(int argc, char **argv) port = htons(atoi(port_string)); else warnx("bad value for -p"); - } else { - sp = getservbyname("ftp", "tcp"); - if(sp) - port = sp->s_port; - else - port = htons(21); } if (maxtimeout < ftpd_timeout) @@ -2165,8 +2164,10 @@ list_file(char *file) if (dout == NULL) return; set_buffer_size(fileno(dout), 0); - builtin_ls(dout, file); - reply(226, "Transfer complete."); + if(builtin_ls(dout, file) == 0) + reply(226, "Transfer complete."); + else + reply(451, "Requested action aborted. Local error in processing."); fclose(dout); data = -1; pdata = -1;