summaryrefslogtreecommitdiffstats
path: root/lib/libftpio
diff options
context:
space:
mode:
authorjkh <jkh@FreeBSD.org>1997-01-21 20:37:59 +0000
committerjkh <jkh@FreeBSD.org>1997-01-21 20:37:59 +0000
commiteddf96348581ba0c87a82705b1e1422f2bb0f14c (patch)
treecf540d51f1a11443d8086ce35b3d1a414d62bc79 /lib/libftpio
parent231d854c5b0df452e46eaa94c6d9493ae2b2b90d (diff)
downloadFreeBSD-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.c7
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)) {
OpenPOWER on IntegriCloud