diff --git a/src/sbbs3/execnet.cpp b/src/sbbs3/execnet.cpp
index 10da1dcf535f8977c5589b9d9eb4a2f6325f5c9e..b027d6bc25ec10082598ba5ec625ba4f266e0e1f 100644
--- a/src/sbbs3/execnet.cpp
+++ b/src/sbbs3/execnet.cpp
@@ -563,12 +563,14 @@ SOCKET sbbs_t::ftp_data_sock(csi_t* csi, SOCKET ctrl_sock, SOCKADDR_IN* addr)
 
 		if(!ftp_cmd(csi,ctrl_sock,"PASV",rsp) 
 			|| atoi(rsp)!=227 /* PASV response */) {
+			bprintf("ftp: failure, line %d",__LINE__);
 			close_socket(data_sock);
 			return(INVALID_SOCKET);
 		}
 
 		p=strchr(rsp,'(');
 		if(p==NULL) {
+			bprintf("ftp: failure, line %d",__LINE__);
 			close_socket(data_sock);
 			return(INVALID_SOCKET);
 		}
@@ -576,6 +578,7 @@ SOCKET sbbs_t::ftp_data_sock(csi_t* csi, SOCKET ctrl_sock, SOCKADDR_IN* addr)
 		if(sscanf(p,"%u,%u,%u,%u,%u,%u"
 			,&ip_b[0],&ip_b[1],&ip_b[2],&ip_b[3]
 			,&port_b[0],&port_b[1])!=6) {
+			bprintf("ftp: failure, line %d",__LINE__);
 			close_socket(data_sock);
 			return(INVALID_SOCKET);
 		}
@@ -761,6 +764,7 @@ bool sbbs_t::ftp_put(csi_t* csi, SOCKET ctrl_sock, char* src, char* dest)
 {
 	char		cmd[512];
 	char		rsp[512];
+	char		path[MAX_PATH+1];
 	char		buf[4097];
 	int			rd;
 	int			result;
@@ -773,9 +777,16 @@ bool sbbs_t::ftp_put(csi_t* csi, SOCKET ctrl_sock, char* src, char* dest)
 	struct timeval	tv;
 	fd_set			socket_set;
 
-	if((data_sock=ftp_data_sock(csi, ctrl_sock, &addr))==INVALID_SOCKET)
+	SAFECOPY(path,src);
+
+	if(!fexistcase(path))
 		return(false);
 
+	if((data_sock=ftp_data_sock(csi, ctrl_sock, &addr))==INVALID_SOCKET) {
+		bprintf("ftp: failure, line %d",__LINE__);
+		return(false);
+	}
+
 	if(csi->ftp_mode&CS_FTP_PASV) {
 
 #if 0	// Debug
@@ -785,13 +796,15 @@ bool sbbs_t::ftp_put(csi_t* csi, SOCKET ctrl_sock, char* src, char* dest)
 #endif
 
 		if(connect(data_sock,(struct sockaddr *)&addr,sizeof(addr))!=0) {
+			bprintf("ftp: failure, line %d",__LINE__);
 			csi->socket_error=ERROR_VALUE;
 			close_socket(data_sock);
 			return(false);
 		}
 	}
 
-	if((fp=fopen(src,"rb"))==NULL) {
+	if((fp=fopen(path,"rb"))==NULL) {
+		bprintf("ftp: failure, line %d",__LINE__);
 		close_socket(data_sock);
 		return(false);
 	}
@@ -800,6 +813,7 @@ bool sbbs_t::ftp_put(csi_t* csi, SOCKET ctrl_sock, char* src, char* dest)
 
 	if(!ftp_cmd(csi,ctrl_sock,cmd,rsp) 
 		|| atoi(rsp)!=150 /* Open data connection */) {
+		bprintf("ftp: failure, line %d",__LINE__);
 		close_socket(data_sock);
 		return(false);
 	}