Skip to content
Snippets Groups Projects
Commit 7d4eb282 authored by rswindell's avatar rswindell
Browse files

Fixed active FTP transfer (broken in rev 1.11), was waiting for connection from

server before sending STOR command.
parent a5518540
No related branches found
No related tags found
No related merge requests found
...@@ -793,8 +793,22 @@ bool sbbs_t::ftp_put(csi_t* csi, SOCKET ctrl_sock, char* src, char* dest) ...@@ -793,8 +793,22 @@ bool sbbs_t::ftp_put(csi_t* csi, SOCKET ctrl_sock, char* src, char* dest)
close_socket(data_sock); close_socket(data_sock);
return(false); 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() */ /* Setup for select() */
tv.tv_sec=TIMEOUT_SOCK_LISTEN; 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) ...@@ -824,22 +838,8 @@ bool sbbs_t::ftp_put(csi_t* csi, SOCKET ctrl_sock, char* src, char* dest)
data_sock=accept_sock; 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)) { while(online && !feof(fp)) {
rd=fread(buf,sizeof(char),sizeof(buf),fp); rd=fread(buf,sizeof(char),sizeof(buf),fp);
if(rd<1) /* EOF or READ error */ if(rd<1) /* EOF or READ error */
break; break;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment