From b191c433b45fcaac3a0220c8df1a2e9d7ebfa752 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Sat, 11 Apr 2020 05:25:54 +0000 Subject: [PATCH] Move the retry loop from smb_addmsg() to smb_fread(). --- src/smblib/smbadd.c | 10 +--------- src/smblib/smbfile.c | 9 ++------- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/src/smblib/smbadd.c b/src/smblib/smbadd.c index 7160f857fb..1c92796aba 100644 --- a/src/smblib/smbadd.c +++ b/src/smblib/smbadd.c @@ -80,15 +80,7 @@ int SMBCALL smb_addmsg(smb_t* smb, smbmsg_t* msg, int storage, long dupechk_hash /* try */ do { - while((retval=smb_getstatus(smb)) == SMB_ERR_READ) { - if(!start) - start=time(NULL); - else - if(time(NULL)-start>=(time_t)smb->retry_time) - break; - SLEEP(smb->retry_delay); - } - if(retval != SMB_SUCCESS) + if((retval = smb_getstatus(smb)) != SMB_SUCCESS) break; msg->hdr.number=smb->status.last_msg+1; diff --git a/src/smblib/smbfile.c b/src/smblib/smbfile.c index ace702890b..e28bc77cff 100644 --- a/src/smblib/smbfile.c +++ b/src/smblib/smbfile.c @@ -98,7 +98,7 @@ size_t SMBCALL smb_fread(smb_t* smb, void* buf, size_t bytes, FILE* fp) while(1) { if((ret=fread(buf,sizeof(char),bytes,fp))==bytes) return(ret); - if(get_errno()!=EDEADLOCK) + if(get_errno()!=EDEADLOCK && get_errno()!=EACCES) return(ret); if(!start) start=time(NULL); @@ -182,12 +182,7 @@ int SMBCALL smb_open_fp(smb_t* smb, FILE** fp, int share) close(file); return(SMB_ERR_OPEN); } -#if 0 /* This causes a noticeable performance hit when new-scanning subs */ - if(fp==&smb->sid_fp) - setvbuf(*fp,NULL,_IONBF,0); /* no buffering (cause of *.sid corruption?) */ - else -#endif - setvbuf(*fp,NULL,_IOFBF,2*1024); + setvbuf(*fp,NULL,_IOFBF, 2*1024); return(SMB_SUCCESS); } -- GitLab