Use 64 bit arithmetics for rate limits

This commit is contained in:
Vladimir Dubrovin 2026-03-27 13:23:06 +03:00
parent ed0a242f24
commit b0755ea482

View File

@ -608,7 +608,7 @@ unsigned bandlimitfunc(struct clientparam *param, unsigned nbytesin, unsigned nb
param->bandlims[i]->nexttime - now : 0; param->bandlims[i]->nexttime - now : 0;
sleeptime = (nsleeptime > sleeptime)? nsleeptime : sleeptime; sleeptime = (nsleeptime > sleeptime)? nsleeptime : sleeptime;
param->bandlims[i]->basetime = sec; param->bandlims[i]->basetime = sec;
param->bandlims[i]->nexttime = msec + nsleeptime + ((nbytesin > 512)? ((nbytesin+32)/64)*(((64*8*1000000)/param->bandlims[i]->rate)) : ((nbytesin+1) * (8*1000000))/param->bandlims[i]->rate); param->bandlims[i]->nexttime = msec + nsleeptime + (((uint64_t)nbytesin * 8 * 1000000) / param->bandlims[i]->rate);
} }
for(i=0; nbytesout && i<MAXBANDLIMS && param->bandlimsout[i]; i++){ for(i=0; nbytesout && i<MAXBANDLIMS && param->bandlimsout[i]; i++){
if( !param->bandlimsout[i]->basetime || if( !param->bandlimsout[i]->basetime ||