diff options
Diffstat (limited to 'OpenSim/Region')
3 files changed, 35 insertions, 20 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs index e43f7cf..c19e6a2 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs | |||
@@ -1,4 +1,4 @@ | |||
1 | /* | 1 | |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | * | 4 | * |
@@ -139,28 +139,43 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
139 | private void ProcessQueues() | 139 | private void ProcessQueues() |
140 | { | 140 | { |
141 | // Process all the pending adds | 141 | // Process all the pending adds |
142 | OutgoingPacket pendingAdd; | ||
143 | while (m_pendingAdds.Dequeue(out pendingAdd)) | ||
144 | m_packets[pendingAdd.SequenceNumber] = pendingAdd; | ||
145 | 142 | ||
143 | OutgoingPacket pendingAdd; | ||
144 | if (m_pendingAdds != null) | ||
145 | { | ||
146 | while (m_pendingAdds.TryDequeue(out pendingAdd)) | ||
147 | { | ||
148 | if (pendingAdd != null && m_packets != null) | ||
149 | { | ||
150 | m_packets[pendingAdd.SequenceNumber] = pendingAdd; | ||
151 | } | ||
152 | } | ||
153 | } | ||
154 | |||
146 | // Process all the pending removes, including updating statistics and round-trip times | 155 | // Process all the pending removes, including updating statistics and round-trip times |
147 | PendingAck pendingRemove; | 156 | PendingAck pendingRemove; |
148 | OutgoingPacket ackedPacket; | 157 | OutgoingPacket ackedPacket; |
149 | while (m_pendingRemoves.Dequeue(out pendingRemove)) | 158 | if (m_pendingRemoves != null) |
150 | { | 159 | { |
151 | if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) | 160 | while (m_pendingRemoves.TryDequeue(out pendingRemove)) |
152 | { | 161 | { |
153 | m_packets.Remove(pendingRemove.SequenceNumber); | 162 | if (m_pendingRemoves != null && m_packets != null) |
154 | |||
155 | // Update stats | ||
156 | System.Threading.Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); | ||
157 | |||
158 | if (!pendingRemove.FromResend) | ||
159 | { | 163 | { |
160 | // Calculate the round-trip time for this packet and its ACK | 164 | if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) |
161 | int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; | 165 | { |
162 | if (rtt > 0) | 166 | m_packets.Remove(pendingRemove.SequenceNumber); |
163 | ackedPacket.Client.UpdateRoundTrip(rtt); | 167 | |
168 | // Update stats | ||
169 | System.Threading.Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); | ||
170 | |||
171 | if (!pendingRemove.FromResend) | ||
172 | { | ||
173 | // Calculate the round-trip time for this packet and its ACK | ||
174 | int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; | ||
175 | if (rtt > 0) | ||
176 | ackedPacket.Client.UpdateRoundTrip(rtt); | ||
177 | } | ||
178 | } | ||
164 | } | 179 | } |
165 | } | 180 | } |
166 | } | 181 | } |
diff --git a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs index 9eaa758..6ed4867 100644 --- a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs +++ b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs | |||
@@ -252,7 +252,7 @@ namespace Flotsam.RegionModules.AssetCache | |||
252 | } | 252 | } |
253 | else | 253 | else |
254 | { | 254 | { |
255 | m_MemoryCache.AddOrUpdate(key, asset, DateTime.MaxValue); | 255 | m_MemoryCache.AddOrUpdate(key, asset, Double.MaxValue); |
256 | } | 256 | } |
257 | } | 257 | } |
258 | } | 258 | } |
@@ -863,4 +863,4 @@ namespace Flotsam.RegionModules.AssetCache | |||
863 | 863 | ||
864 | #endregion | 864 | #endregion |
865 | } | 865 | } |
866 | } \ No newline at end of file | 866 | } |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs index 7c12b8c..e7cfda1 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs | |||
@@ -53,9 +53,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.UserAccounts | |||
53 | public void Cache(UUID userID, UserAccount account) | 53 | public void Cache(UUID userID, UserAccount account) |
54 | { | 54 | { |
55 | // Cache even null accounts | 55 | // Cache even null accounts |
56 | m_UUIDCache.AddOrUpdate(userID, account, DateTime.Now + TimeSpan.FromSeconds(CACHE_EXPIRATION_SECONDS)); | 56 | m_UUIDCache.AddOrUpdate(userID, account, CACHE_EXPIRATION_SECONDS); |
57 | if (account != null) | 57 | if (account != null) |
58 | m_NameCache.AddOrUpdate(account.Name, account.PrincipalID, DateTime.Now + TimeSpan.FromSeconds(CACHE_EXPIRATION_SECONDS)); | 58 | m_NameCache.AddOrUpdate(account.Name, account.PrincipalID, CACHE_EXPIRATION_SECONDS); |
59 | 59 | ||
60 | m_log.DebugFormat("[USER CACHE]: cached user {0}", userID); | 60 | m_log.DebugFormat("[USER CACHE]: cached user {0}", userID); |
61 | } | 61 | } |