diff --git a/release/sysinstall/ftp.c b/release/sysinstall/ftp.c index 3814dc22a3b..3b4b01dab86 100644 --- a/release/sysinstall/ftp.c +++ b/release/sysinstall/ftp.c @@ -190,19 +190,17 @@ mediaGetFTP(Device *dev, char *file, Boolean probe) while ((fp = ftpGet(OpenConn, try, 0)) == NULL) { /* If a hard fail, try to "bounce" the ftp server to clear it */ if (ftpErrno(OpenConn) != 550) { - char *cp = variable_get(VAR_FTP_PATH); - dev->shutdown(dev); - variable_unset(VAR_FTP_PATH); + if (ftpErrno(OpenConn) != 421)) /* Timeout? */ + variable_unset(VAR_FTP_PATH); /* If we can't re-initialize, just forget it */ if (!dev->init(dev)) { netDown(dev); fclose(OpenConn); OpenConn = NULL; + variable_unset(VAR_FTP_PATH); return NULL; } - else - variable_set2(VAR_FTP_PATH, cp); } else if (probe) return NULL; diff --git a/usr.sbin/sysinstall/ftp.c b/usr.sbin/sysinstall/ftp.c index 3814dc22a3b..3b4b01dab86 100644 --- a/usr.sbin/sysinstall/ftp.c +++ b/usr.sbin/sysinstall/ftp.c @@ -190,19 +190,17 @@ mediaGetFTP(Device *dev, char *file, Boolean probe) while ((fp = ftpGet(OpenConn, try, 0)) == NULL) { /* If a hard fail, try to "bounce" the ftp server to clear it */ if (ftpErrno(OpenConn) != 550) { - char *cp = variable_get(VAR_FTP_PATH); - dev->shutdown(dev); - variable_unset(VAR_FTP_PATH); + if (ftpErrno(OpenConn) != 421)) /* Timeout? */ + variable_unset(VAR_FTP_PATH); /* If we can't re-initialize, just forget it */ if (!dev->init(dev)) { netDown(dev); fclose(OpenConn); OpenConn = NULL; + variable_unset(VAR_FTP_PATH); return NULL; } - else - variable_set2(VAR_FTP_PATH, cp); } else if (probe) return NULL;