diff options
author | jkh <jkh@FreeBSD.org> | 1997-01-21 20:37:59 +0000 |
---|---|---|
committer | jkh <jkh@FreeBSD.org> | 1997-01-21 20:37:59 +0000 |
commit | eddf96348581ba0c87a82705b1e1422f2bb0f14c (patch) | |
tree | cf540d51f1a11443d8086ce35b3d1a414d62bc79 /lib/libftpio | |
parent | 231d854c5b0df452e46eaa94c6d9493ae2b2b90d (diff) | |
download | FreeBSD-src-eddf96348581ba0c87a82705b1e1422f2bb0f14c.zip FreeBSD-src-eddf96348581ba0c87a82705b1e1422f2bb0f14c.tar.gz |
Only send QUIT if the last operation didn't time out (otherwise you're
just going to hang forever on the close).
Diffstat (limited to 'lib/libftpio')
-rw-r--r-- | lib/libftpio/ftpio.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/libftpio/ftpio.c b/lib/libftpio/ftpio.c index b82efaf..7419c37 100644 --- a/lib/libftpio/ftpio.c +++ b/lib/libftpio/ftpio.c @@ -611,8 +611,11 @@ ftp_close(FTP_t ftp) if (ftp->con_state == isopen) { ftp->con_state = quit; - /* Debug("ftp_pkg: in ftp_close(), sending QUIT"); */ - i = cmd(ftp, "QUIT"); + /* If last operation timed out, don't try to quit - just close */ + if (ftp->errno != FTP_TIMED_OUT) + i = cmd(ftp, "QUIT"); + else + i = FTP_QUIT_HAPPY; close(ftp->fd_ctrl); ftp->fd_ctrl = -1; if (check_code(ftp, i, FTP_QUIT_HAPPY)) { |