diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c index 34bfbf051c15170efbaf0a1d264b106db27f8f96..4ccfee00d00b1e4623e3fce84d257673fea97c88 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);