diff --git a/src/sbbs3/execnet.cpp b/src/sbbs3/execnet.cpp index 6cdf9301c5233b6dcf69149d8a227a3e134aefd1..852a59863fb8b500ae745635b177470178979e82 100644 --- a/src/sbbs3/execnet.cpp +++ b/src/sbbs3/execnet.cpp @@ -793,8 +793,22 @@ bool sbbs_t::ftp_put(csi_t* csi, SOCKET ctrl_sock, char* src, char* dest) close_socket(data_sock); return(false); } + } - } else { /* Normal (Active) FTP */ + if((fp=fopen(src,"rb"))==NULL) { + close_socket(data_sock); + return(false); + } + + sprintf(cmd,"STOR %s",dest); + + if(!ftp_cmd(csi,ctrl_sock,cmd,rsp) + || atoi(rsp)!=150 /* Open data connection */) { + close_socket(data_sock); + return(false); + } + + if(!(csi->ftp_mode&CS_FTP_PASV)) { /* Normal (Active) FTP */ /* Setup for select() */ tv.tv_sec=TIMEOUT_SOCK_LISTEN; @@ -824,22 +838,8 @@ bool sbbs_t::ftp_put(csi_t* csi, SOCKET ctrl_sock, char* src, char* dest) data_sock=accept_sock; } - if((fp=fopen(src,"rb"))==NULL) { - close_socket(data_sock); - return(false); - } - - sprintf(cmd,"STOR %s",dest); - - if(!ftp_cmd(csi,ctrl_sock,cmd,rsp) - || atoi(rsp)!=150 /* Open data connection */) { - close_socket(data_sock); - return(false); - } - while(online && !feof(fp)) { - rd=fread(buf,sizeof(char),sizeof(buf),fp); if(rd<1) /* EOF or READ error */ break;