This may have been the biggest, baddest bug in OpenSim ever... confusion between bytes per second and bytes per millisecond.
parent
8ea4933742
commit
870bbcfc6c
|
@ -119,6 +119,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
|
||||
#endregion Properties
|
||||
|
||||
// To help debugging
|
||||
private static int idCount = 0;
|
||||
private int id;
|
||||
|
||||
/// <summary>
|
||||
/// Default constructor
|
||||
/// </summary>
|
||||
|
@ -134,6 +138,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
MaxBurst = maxBurst;
|
||||
DripRate = dripRate;
|
||||
lastDrip = Environment.TickCount & Int32.MaxValue;
|
||||
id = idCount++;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -191,6 +196,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
if (tokensPerMS == 0)
|
||||
{
|
||||
content = maxBurst;
|
||||
//Console.WriteLine("XXX (" + id + ") content = maxBurst and maxBurst = " + maxBurst);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
|
@ -205,11 +211,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
return false;
|
||||
}
|
||||
|
||||
int dripAmount = deltaMS * tokensPerMS;
|
||||
|
||||
// dripAmpount here is in bytes per millisecond
|
||||
int dripAmount = deltaMS * tokensPerMS;
|
||||
// but content is in bytes per second, so let's multiply by 1000
|
||||
dripAmount = dripAmount * 1000;
|
||||
content = Math.Min(content + dripAmount, maxBurst);
|
||||
lastDrip = now;
|
||||
|
||||
//Console.WriteLine("XXX (" + id + ") deltaMS=" + deltaMS + "; tokensPerMS=" + tokensPerMS + "; content=" + content + "; dripAmount=" + dripAmount);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue