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))