diff options
| author | Yoshinobu Inoue <shin@FreeBSD.org> | 2000-02-18 07:02:48 +0000 |
|---|---|---|
| committer | Yoshinobu Inoue <shin@FreeBSD.org> | 2000-02-18 07:02:48 +0000 |
| commit | aeb2954d05850ad75c978fd62d9319c1eab41009 (patch) | |
| tree | b7dac2d426dd4ed00377882daa9e07f5cc6b1bc5 | |
| parent | b349038c95fa6633679b16c5a851ff75c36260ce (diff) | |
Notes
| -rw-r--r-- | usr.bin/ftp/ftp.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/usr.bin/ftp/ftp.c b/usr.bin/ftp/ftp.c index cfdfda8f3995..ddf41e19318e 100644 --- a/usr.bin/ftp/ftp.c +++ b/usr.bin/ftp/ftp.c @@ -1174,6 +1174,8 @@ initconn() #endif if (passivemode) { + static int try_epsv = 1; + data_addr = myctladdr; data = socket(data_addr.su_family, SOCK_STREAM, 0); if (data < 0) { @@ -1205,13 +1207,18 @@ initconn() warn("setsockopt (ignored)"); switch (data_addr.su_family) { case AF_INET: - result = command(pasvcmd = "EPSV"); - if (code / 10 == 22 && code != 229) { - puts("wrong server: return code must be 229"); + if (try_epsv != 0) { + result = command(pasvcmd = "EPSV"); + if (code / 10 == 22 && code != 229) { + puts("wrong server: return code must be 229"); + result = COMPLETE + 1; + } + } else result = COMPLETE + 1; - } - if (result != COMPLETE) + if (result != COMPLETE) { + try_epsv = 0; result = command(pasvcmd = "PASV"); + } break; #ifdef INET6 case AF_INET6: |
