This may have been the biggest, baddest bug in OpenSim ever... confusion between bytes per second and bytes per millisecond.

viewer-2-initial-appearance
Diva Canto 2010-12-13 09:42:27 -08:00
parent 8ea4933742
commit 870bbcfc6c
1 changed files with 11 additions and 2 deletions

View File

@ -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;
}
}