diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c index 6cca49757c5b6bde2ccfc11de21cbbab14adcc38..5483d737f02038a3b9a82f6cea63ee3e48739237 100644 --- a/src/sbbs3/ftpsrvr.c +++ b/src/sbbs3/ftpsrvr.c @@ -1335,6 +1335,7 @@ static void send_thread(void* arg) ulong dur; ulong cps; ulong length; + BOOL exempt; BOOL error=FALSE; FILE* fp; file_t f; @@ -1552,9 +1553,13 @@ static void send_thread(void* arg) if(xfer.credits) { xfer.user->dls=(ushort)adjustuserrec(&scfg, xfer.user->number,U_DLS,5,1); xfer.user->dlb=adjustuserrec(&scfg, xfer.user->number,U_DLB,10,total); - if(xfer.dir>=0 && !(scfg.dir[xfer.dir]->misc&DIR_FREE) - /* && !chk_ar(&scfg, scfg.dir[xfer.dir]->ex_ar, xfer.user) */ - && !(xfer.user->exempt&FLAG('D'))) + exempt=FALSE; + if(xfer.user->exempt&FLAG('D')) + exempt=TRUE; + if(scfg.dir[xfer.dir]->ex_ar[0]!=0 + && chk_ar(&scfg, scfg.dir[xfer.dir]->ex_ar, xfer.user)) + exempt=TRUE; + if(xfer.dir>=0 && !(scfg.dir[xfer.dir]->misc&DIR_FREE) && !exempt) subtract_cdt(&scfg, xfer.user, xfer.credits); } if(!xfer.tmpfile && !xfer.delfile)