From f9dd93c6d77be161d6bb761320d94b00ff308371 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Wed, 19 Sep 2001 22:11:54 +0000
Subject: [PATCH] Fixed up the "waiting for transfer to complete" section to
 abort if server is shut-down (dangerous?) and not to disconnect
 over-and-over.

---
 src/sbbs3/ftpsrvr.c | 28 +++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c
index 34bfbf051c..4ccfee00d0 100644
--- a/src/sbbs3/ftpsrvr.c
+++ b/src/sbbs3/ftpsrvr.c
@@ -4020,20 +4020,22 @@ static void ctrl_thread(void* arg)
 	if(transfer_inprogress==TRUE) {
 		lprintf("%04d Waiting for transfer to complete...",sock);
 		while(/* data_sock!=INVALID_SOCKET && removed SEP-16-2001 */
-			transfer_inprogress==TRUE) {
+			transfer_inprogress==TRUE && server_socket!=INVALID_SOCKET) {
 			mswait(500);
-			if(gettimeleft(&scfg,&user,logintime)<1) {
-				lprintf("%04d Out of time, disconnecting",sock);
-				sockprintf(sock,"421 Sorry, you've run out of time.");
-				ftp_close_socket(&data_sock,__LINE__);
-				transfer_aborted=TRUE;
-			}
-			if((time(NULL)-lastactive)>startup->max_inactivity) {
-				lprintf("%04d Disconnecting due to to inactivity.",sock);
-				sockprintf(sock,"421 Disconnecting due to inactivity (%u seconds)."
-					,startup->max_inactivity);
-				ftp_close_socket(&data_sock,__LINE__);
-				transfer_aborted=TRUE;
+			if(!transfer_aborted) {
+				if(gettimeleft(&scfg,&user,logintime)<1) {
+					lprintf("%04d Out of time, disconnecting",sock);
+					sockprintf(sock,"421 Sorry, you've run out of time.");
+					ftp_close_socket(&data_sock,__LINE__);
+					transfer_aborted=TRUE;
+				}
+				if((time(NULL)-lastactive)>startup->max_inactivity) {
+					lprintf("%04d Disconnecting due to to inactivity.",sock);
+					sockprintf(sock,"421 Disconnecting due to inactivity (%u seconds)."
+						,startup->max_inactivity);
+					ftp_close_socket(&data_sock,__LINE__);
+					transfer_aborted=TRUE;
+				}
 			}
 		}
 		lprintf("%04d Done waiting for transfer to complete",sock);
-- 
GitLab