diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c
index 57072d871bea10b3254fd34ce47515b9ae37d98d..e4599bfacf1142c650d1aa1f7a0f87d1ee20fe28 100644
--- a/src/sbbs3/ftpsrvr.c
+++ b/src/sbbs3/ftpsrvr.c
@@ -1382,7 +1382,8 @@ static void send_thread(void* arg)
 
 	length=flength(xfer.filename);
 
-	if((fp=fnopen(NULL,xfer.filename,O_RDONLY|O_BINARY))==NULL) {	/* was fopen(...,"rb") */
+	if((fp=fnopen(NULL,xfer.filename,O_RDONLY|O_BINARY))==NULL	/* non-shareable open failed */
+		&& (fp=fopen(xfer.filename,"rb"))==NULL) {				/* shareable open failed */
 		lprintf(LOG_ERR,"%04d !DATA ERROR %d opening %s",xfer.ctrl_sock,errno,xfer.filename);
 		sockprintf(xfer.ctrl_sock,"450 ERROR %d opening %s.",errno,xfer.filename);
 		if(xfer.tmpfile && !(startup->options&FTP_OPT_KEEP_TEMP_FILES))