upload & downlad speed problem... bug ???
Posted: Mon Dec 17, 2012 3:59 am
upload & downlad speed get too lagre when i changed my system time on transmission 2.73...
I search the problem in source, maybe here cause it...
static unsigned int
getSpeed_Bps( const struct bratecontrol * r, unsigned int interval_msec, uint64_t now )
{
if( !now )
now = tr_time_msec();
if( now != r->cache_time )
{
int i = r->newest;
uint64_t bytes = 0;
const uint64_t cutoff = now - interval_msec;
struct bratecontrol * rvolatile = (struct bratecontrol*) r;
for( ;; )
{
if( r->transfers.date <= cutoff )
break;
bytes += r->transfers.size;
if( --i == -1 ) i = HISTORY_SIZE - 1; /* circular history */
if( i == r->newest ) break; /* we've come all the way around */
}
rvolatile->cache_val = (unsigned int)(( bytes * 1000u ) / interval_msec);
rvolatile->cache_time = now;
}
return r->cache_val;
}
static void
bytesUsed( const uint64_t now, struct bratecontrol * r, size_t size )
{
if( r->transfers[r->newest].date + GRANULARITY_MSEC >= now )
r->transfers[r->newest].size += size;
else
{
if( ++r->newest == HISTORY_SIZE ) r->newest = 0;
r->transfers[r->newest].date = now;
r->transfers[r->newest].size = size;
}
/* invalidate cache_val*/
r->cache_time = 0;
}
I search the problem in source, maybe here cause it...
static unsigned int
getSpeed_Bps( const struct bratecontrol * r, unsigned int interval_msec, uint64_t now )
{
if( !now )
now = tr_time_msec();
if( now != r->cache_time )
{
int i = r->newest;
uint64_t bytes = 0;
const uint64_t cutoff = now - interval_msec;
struct bratecontrol * rvolatile = (struct bratecontrol*) r;
for( ;; )
{
if( r->transfers.date <= cutoff )
break;
bytes += r->transfers.size;
if( --i == -1 ) i = HISTORY_SIZE - 1; /* circular history */
if( i == r->newest ) break; /* we've come all the way around */
}
rvolatile->cache_val = (unsigned int)(( bytes * 1000u ) / interval_msec);
rvolatile->cache_time = now;
}
return r->cache_val;
}
static void
bytesUsed( const uint64_t now, struct bratecontrol * r, size_t size )
{
if( r->transfers[r->newest].date + GRANULARITY_MSEC >= now )
r->transfers[r->newest].size += size;
else
{
if( ++r->newest == HISTORY_SIZE ) r->newest = 0;
r->transfers[r->newest].date = now;
r->transfers[r->newest].size = size;
}
/* invalidate cache_val*/
r->cache_time = 0;
}