aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack
diff options
context:
space:
mode:
authorUbitUmarov2016-11-22 22:24:54 +0000
committerUbitUmarov2016-11-22 22:24:54 +0000
commitf4745e5a354871c5b248d10bb57f40cae5cc788c (patch)
tree5b13f965a77ba6e0fbf6a3c3b7a62389bbde607d /OpenSim/Region/ClientStack
parentMinor fix to region default landing point sanity check (diff)
downloadopensim-SC_OLD-f4745e5a354871c5b248d10bb57f40cae5cc788c.zip
opensim-SC_OLD-f4745e5a354871c5b248d10bb57f40cae5cc788c.tar.gz
opensim-SC_OLD-f4745e5a354871c5b248d10bb57f40cae5cc788c.tar.bz2
opensim-SC_OLD-f4745e5a354871c5b248d10bb57f40cae5cc788c.tar.xz
full change ServiceThrottleModule. Let it still service RegionHandleRequest and UUIDNameRequest but this wrong since they are diferent services. Keeping gambling about not having 2 much overlaps of the 2 kind of requests. Remove double thottling of RegionHandleRequest
Diffstat (limited to 'OpenSim/Region/ClientStack')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs52
1 files changed, 4 insertions, 48 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index 65a341e..f472dba 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -9614,61 +9614,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP
9614 9614
9615 #region Parcel related packets 9615 #region Parcel related packets
9616 9616
9617 // acumulate several HandleRegionHandleRequest consecutive overlaping requests
9618 // to be done with minimal resources as possible
9619 // variables temporary here while in test
9620
9621 Queue<UUID> RegionHandleRequests = new Queue<UUID>();
9622 bool RegionHandleRequestsInService = false;
9623
9624 private bool HandleRegionHandleRequest(IClientAPI sender, Packet Pack) 9617 private bool HandleRegionHandleRequest(IClientAPI sender, Packet Pack)
9625 { 9618 {
9626 UUID currentUUID;
9627
9628 RegionHandleRequest handlerRegionHandleRequest = OnRegionHandleRequest; 9619 RegionHandleRequest handlerRegionHandleRequest = OnRegionHandleRequest;
9629 9620
9630 if (handlerRegionHandleRequest == null) 9621 if (handlerRegionHandleRequest != null)
9631 return true;
9632
9633 RegionHandleRequestPacket rhrPack = (RegionHandleRequestPacket)Pack;
9634
9635 lock (RegionHandleRequests)
9636 { 9622 {
9637 if (RegionHandleRequestsInService) 9623 RegionHandleRequestPacket rhrPack = (RegionHandleRequestPacket)Pack;
9638 { 9624 handlerRegionHandleRequest(this, rhrPack.RequestBlock.RegionID);
9639 // we are already busy doing a previus request
9640 // so enqueue it
9641 RegionHandleRequests.Enqueue(rhrPack.RequestBlock.RegionID);
9642 return true;
9643 }
9644
9645 // else do it
9646 currentUUID = rhrPack.RequestBlock.RegionID;
9647 RegionHandleRequestsInService = true;
9648 } 9625 }
9649 9626
9650 while (true) 9627 return true;
9651 {
9652 handlerRegionHandleRequest(this, currentUUID);
9653
9654 lock (RegionHandleRequests)
9655 {
9656 // exit condition, nothing to do or closed
9657 // current code seems to assume we may loose the handler at anytime,
9658 // so keep checking it
9659 handlerRegionHandleRequest = OnRegionHandleRequest;
9660
9661 if (RegionHandleRequests.Count == 0 || !IsActive || handlerRegionHandleRequest == null)
9662 {
9663 RegionHandleRequests.Clear();
9664 RegionHandleRequestsInService = false;
9665 return true;
9666 }
9667 currentUUID = RegionHandleRequests.Dequeue();
9668 }
9669 }
9670
9671 return true; // actually unreached
9672 } 9628 }
9673 9629
9674 private bool HandleParcelInfoRequest(IClientAPI sender, Packet Pack) 9630 private bool HandleParcelInfoRequest(IClientAPI sender, Packet Pack)