aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorTeravus Ovares (Dan Olivares)2009-12-13 02:08:28 -0500
committerTeravus Ovares (Dan Olivares)2009-12-13 02:08:28 -0500
commit4ef8dc7d96fa2d4efd992ff7d304b8894f004c4f (patch)
tree74b879a7c715db89933260a07cc80fabe82ed568
parent* Mistaken ThreatLevel classification on osGetSimulatorMemory - should have b... (diff)
downloadopensim-SC_OLD-4ef8dc7d96fa2d4efd992ff7d304b8894f004c4f.zip
opensim-SC_OLD-4ef8dc7d96fa2d4efd992ff7d304b8894f004c4f.tar.gz
opensim-SC_OLD-4ef8dc7d96fa2d4efd992ff7d304b8894f004c4f.tar.bz2
opensim-SC_OLD-4ef8dc7d96fa2d4efd992ff7d304b8894f004c4f.tar.xz
* Add some glue that allows LocalPacketHandlers to decide if they want the packet to be processed asynchronously or not.
* Make several packets not asynchronous (such as AgentUpdate). In theory, all fast returning packet handling methods should not be asynchronous. Ones that wait on an external resource or a long held lock, should be asynchronous.
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs136
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs2
2 files changed, 90 insertions, 48 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index fba5090..9184c90 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -332,7 +332,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
332 private AgentUpdateArgs lastarg; 332 private AgentUpdateArgs lastarg;
333 private bool m_IsActive = true; 333 private bool m_IsActive = true;
334 334
335 protected Dictionary<PacketType, PacketMethod> m_packetHandlers = new Dictionary<PacketType, PacketMethod>(); 335 protected Dictionary<PacketType, PacketProcessor> m_packetHandlers = new Dictionary<PacketType, PacketProcessor>();
336 protected Dictionary<string, GenericMessage> m_genericPacketHandlers = new Dictionary<string, GenericMessage>(); //PauPaw:Local Generic Message handlers 336 protected Dictionary<string, GenericMessage> m_genericPacketHandlers = new Dictionary<string, GenericMessage>(); //PauPaw:Local Generic Message handlers
337 protected Scene m_scene; 337 protected Scene m_scene;
338 protected LLImageManager m_imageManager; 338 protected LLImageManager m_imageManager;
@@ -540,12 +540,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP
540 540
541 public bool AddLocalPacketHandler(PacketType packetType, PacketMethod handler) 541 public bool AddLocalPacketHandler(PacketType packetType, PacketMethod handler)
542 { 542 {
543 return AddLocalPacketHandler(packetType, handler, true);
544 }
545
546 public bool AddLocalPacketHandler(PacketType packetType, PacketMethod handler, bool async)
547 {
543 bool result = false; 548 bool result = false;
544 lock (m_packetHandlers) 549 lock (m_packetHandlers)
545 { 550 {
546 if (!m_packetHandlers.ContainsKey(packetType)) 551 if (!m_packetHandlers.ContainsKey(packetType))
547 { 552 {
548 m_packetHandlers.Add(packetType, handler); 553 m_packetHandlers.Add(packetType, new PacketProcessor() { method = handler, Async = async });
549 result = true; 554 result = true;
550 } 555 }
551 } 556 }
@@ -576,15 +581,25 @@ namespace OpenSim.Region.ClientStack.LindenUDP
576 protected virtual bool ProcessPacketMethod(Packet packet) 581 protected virtual bool ProcessPacketMethod(Packet packet)
577 { 582 {
578 bool result = false; 583 bool result = false;
579 PacketMethod method; 584 PacketProcessor pprocessor;
580 if (m_packetHandlers.TryGetValue(packet.Type, out method)) 585 if (m_packetHandlers.TryGetValue(packet.Type, out pprocessor))
581 { 586 {
582 //there is a local handler for this packet type 587 //there is a local handler for this packet type
583 result = method(this, packet); 588 if (pprocessor.Async)
589 {
590 object obj = new AsyncPacketProcess(this, pprocessor.method, packet);
591 Util.FireAndForget(ProcessSpecificPacketAsync,obj);
592 result = true;
593 }
594 else
595 {
596 result = pprocessor.method(this, packet);
597 }
584 } 598 }
585 else 599 else
586 { 600 {
587 //there is not a local handler so see if there is a Global handler 601 //there is not a local handler so see if there is a Global handler
602 PacketMethod method = null;
588 bool found; 603 bool found;
589 lock (PacketHandlers) 604 lock (PacketHandlers)
590 { 605 {
@@ -598,6 +613,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
598 return result; 613 return result;
599 } 614 }
600 615
616 public void ProcessSpecificPacketAsync(object state)
617 {
618 AsyncPacketProcess packetObject = (AsyncPacketProcess)state;
619 packetObject.result = packetObject.Method(packetObject.ClientView, packetObject.Pack);
620
621 }
622
601 #endregion Packet Handling 623 #endregion Packet Handling
602 624
603 # region Setup 625 # region Setup
@@ -4340,26 +4362,26 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4340 protected virtual void RegisterLocalPacketHandlers() 4362 protected virtual void RegisterLocalPacketHandlers()
4341 { 4363 {
4342 AddLocalPacketHandler(PacketType.LogoutRequest, HandleLogout); 4364 AddLocalPacketHandler(PacketType.LogoutRequest, HandleLogout);
4343 AddLocalPacketHandler(PacketType.AgentUpdate, HandleAgentUpdate); 4365 AddLocalPacketHandler(PacketType.AgentUpdate, HandleAgentUpdate, false);
4344 AddLocalPacketHandler(PacketType.ViewerEffect, HandleViewerEffect); 4366 AddLocalPacketHandler(PacketType.ViewerEffect, HandleViewerEffect, false);
4345 AddLocalPacketHandler(PacketType.AgentCachedTexture, HandleAgentTextureCached); 4367 AddLocalPacketHandler(PacketType.AgentCachedTexture, HandleAgentTextureCached, false);
4346 AddLocalPacketHandler(PacketType.MultipleObjectUpdate, HandleMultipleObjUpdate); 4368 AddLocalPacketHandler(PacketType.MultipleObjectUpdate, HandleMultipleObjUpdate, false);
4347 AddLocalPacketHandler(PacketType.MoneyTransferRequest, HandleMoneyTransferRequest); 4369 AddLocalPacketHandler(PacketType.MoneyTransferRequest, HandleMoneyTransferRequest, false);
4348 AddLocalPacketHandler(PacketType.ParcelBuy, HandleParcelBuyRequest); 4370 AddLocalPacketHandler(PacketType.ParcelBuy, HandleParcelBuyRequest, false);
4349 AddLocalPacketHandler(PacketType.UUIDGroupNameRequest, HandleUUIDGroupNameRequest); 4371 AddLocalPacketHandler(PacketType.UUIDGroupNameRequest, HandleUUIDGroupNameRequest, false);
4350 AddLocalPacketHandler(PacketType.ObjectGroup, HandleObjectGroupRequest); 4372 AddLocalPacketHandler(PacketType.ObjectGroup, HandleObjectGroupRequest, false);
4351 AddLocalPacketHandler(PacketType.GenericMessage, HandleGenericMessage); 4373 AddLocalPacketHandler(PacketType.GenericMessage, HandleGenericMessage);
4352 AddLocalPacketHandler(PacketType.AvatarPropertiesRequest, HandleAvatarPropertiesRequest); 4374 AddLocalPacketHandler(PacketType.AvatarPropertiesRequest, HandleAvatarPropertiesRequest);
4353 AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer); 4375 AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer);
4354 AddLocalPacketHandler(PacketType.AvatarPropertiesUpdate, HandlerAvatarPropertiesUpdate); 4376 AddLocalPacketHandler(PacketType.AvatarPropertiesUpdate, HandlerAvatarPropertiesUpdate);
4355 AddLocalPacketHandler(PacketType.ScriptDialogReply, HandlerScriptDialogReply); 4377 AddLocalPacketHandler(PacketType.ScriptDialogReply, HandlerScriptDialogReply);
4356 AddLocalPacketHandler(PacketType.ImprovedInstantMessage, HandlerImprovedInstantMessage); 4378 AddLocalPacketHandler(PacketType.ImprovedInstantMessage, HandlerImprovedInstantMessage, false);
4357 AddLocalPacketHandler(PacketType.AcceptFriendship, HandlerAcceptFriendship); 4379 AddLocalPacketHandler(PacketType.AcceptFriendship, HandlerAcceptFriendship);
4358 AddLocalPacketHandler(PacketType.DeclineFriendship, HandlerDeclineFriendship); 4380 AddLocalPacketHandler(PacketType.DeclineFriendship, HandlerDeclineFriendship);
4359 AddLocalPacketHandler(PacketType.TerminateFriendship, HandlerTerminateFrendship); 4381 AddLocalPacketHandler(PacketType.TerminateFriendship, HandlerTerminateFrendship);
4360 AddLocalPacketHandler(PacketType.RezObject, HandlerRezObject); 4382 AddLocalPacketHandler(PacketType.RezObject, HandlerRezObject);
4361 AddLocalPacketHandler(PacketType.DeRezObject, HandlerDeRezObject); 4383 AddLocalPacketHandler(PacketType.DeRezObject, HandlerDeRezObject);
4362 AddLocalPacketHandler(PacketType.ModifyLand, HandlerModifyLand); 4384 AddLocalPacketHandler(PacketType.ModifyLand, HandlerModifyLand, false);
4363 AddLocalPacketHandler(PacketType.RegionHandshakeReply, HandlerRegionHandshakeReply); 4385 AddLocalPacketHandler(PacketType.RegionHandshakeReply, HandlerRegionHandshakeReply);
4364 AddLocalPacketHandler(PacketType.AgentWearablesRequest, HandlerAgentWearablesRequest); 4386 AddLocalPacketHandler(PacketType.AgentWearablesRequest, HandlerAgentWearablesRequest);
4365 AddLocalPacketHandler(PacketType.AgentSetAppearance, HandlerAgentSetAppearance); 4387 AddLocalPacketHandler(PacketType.AgentSetAppearance, HandlerAgentSetAppearance);
@@ -4370,9 +4392,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4370 AddLocalPacketHandler(PacketType.ObjectAttach, HandleObjectAttach); 4392 AddLocalPacketHandler(PacketType.ObjectAttach, HandleObjectAttach);
4371 AddLocalPacketHandler(PacketType.ObjectDetach, HandleObjectDetach); 4393 AddLocalPacketHandler(PacketType.ObjectDetach, HandleObjectDetach);
4372 AddLocalPacketHandler(PacketType.ObjectDrop, HandleObjectDrop); 4394 AddLocalPacketHandler(PacketType.ObjectDrop, HandleObjectDrop);
4373 AddLocalPacketHandler(PacketType.SetAlwaysRun, HandleSetAlwaysRun); 4395 AddLocalPacketHandler(PacketType.SetAlwaysRun, HandleSetAlwaysRun, false);
4374 AddLocalPacketHandler(PacketType.CompleteAgentMovement, HandleCompleteAgentMovement); 4396 AddLocalPacketHandler(PacketType.CompleteAgentMovement, HandleCompleteAgentMovement);
4375 AddLocalPacketHandler(PacketType.AgentAnimation, HandleAgentAnimation); 4397 AddLocalPacketHandler(PacketType.AgentAnimation, HandleAgentAnimation, false);
4376 AddLocalPacketHandler(PacketType.AgentRequestSit, HandleAgentRequestSit); 4398 AddLocalPacketHandler(PacketType.AgentRequestSit, HandleAgentRequestSit);
4377 AddLocalPacketHandler(PacketType.AgentSit, HandleAgentSit); 4399 AddLocalPacketHandler(PacketType.AgentSit, HandleAgentSit);
4378 AddLocalPacketHandler(PacketType.SoundTrigger, HandleSoundTrigger); 4400 AddLocalPacketHandler(PacketType.SoundTrigger, HandleSoundTrigger);
@@ -4381,9 +4403,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4381 AddLocalPacketHandler(PacketType.UserInfoRequest, HandleUserInfoRequest); 4403 AddLocalPacketHandler(PacketType.UserInfoRequest, HandleUserInfoRequest);
4382 AddLocalPacketHandler(PacketType.UpdateUserInfo, HandleUpdateUserInfo); 4404 AddLocalPacketHandler(PacketType.UpdateUserInfo, HandleUpdateUserInfo);
4383 AddLocalPacketHandler(PacketType.SetStartLocationRequest, HandleSetStartLocationRequest); 4405 AddLocalPacketHandler(PacketType.SetStartLocationRequest, HandleSetStartLocationRequest);
4384 AddLocalPacketHandler(PacketType.AgentThrottle, HandleAgentThrottle); 4406 AddLocalPacketHandler(PacketType.AgentThrottle, HandleAgentThrottle, false);
4385 AddLocalPacketHandler(PacketType.AgentPause, HandleAgentPause); 4407 AddLocalPacketHandler(PacketType.AgentPause, HandleAgentPause, false);
4386 AddLocalPacketHandler(PacketType.AgentResume, HandleAgentResume); 4408 AddLocalPacketHandler(PacketType.AgentResume, HandleAgentResume, false);
4387 AddLocalPacketHandler(PacketType.ForceScriptControlRelease, HandleForceScriptControlRelease); 4409 AddLocalPacketHandler(PacketType.ForceScriptControlRelease, HandleForceScriptControlRelease);
4388 AddLocalPacketHandler(PacketType.ObjectLink, HandleObjectLink); 4410 AddLocalPacketHandler(PacketType.ObjectLink, HandleObjectLink);
4389 AddLocalPacketHandler(PacketType.ObjectDelink, HandleObjectDelink); 4411 AddLocalPacketHandler(PacketType.ObjectDelink, HandleObjectDelink);
@@ -4399,22 +4421,22 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4399 AddLocalPacketHandler(PacketType.ObjectRotation, HandleObjectRotation); 4421 AddLocalPacketHandler(PacketType.ObjectRotation, HandleObjectRotation);
4400 AddLocalPacketHandler(PacketType.ObjectFlagUpdate, HandleObjectFlagUpdate); 4422 AddLocalPacketHandler(PacketType.ObjectFlagUpdate, HandleObjectFlagUpdate);
4401 AddLocalPacketHandler(PacketType.ObjectImage, HandleObjectImage); 4423 AddLocalPacketHandler(PacketType.ObjectImage, HandleObjectImage);
4402 AddLocalPacketHandler(PacketType.ObjectGrab, HandleObjectGrab); 4424 AddLocalPacketHandler(PacketType.ObjectGrab, HandleObjectGrab, false);
4403 AddLocalPacketHandler(PacketType.ObjectGrabUpdate, HandleObjectGrabUpdate); 4425 AddLocalPacketHandler(PacketType.ObjectGrabUpdate, HandleObjectGrabUpdate, false);
4404 AddLocalPacketHandler(PacketType.ObjectDeGrab, HandleObjectDeGrab); 4426 AddLocalPacketHandler(PacketType.ObjectDeGrab, HandleObjectDeGrab);
4405 AddLocalPacketHandler(PacketType.ObjectSpinStart, HandleObjectSpinStart); 4427 AddLocalPacketHandler(PacketType.ObjectSpinStart, HandleObjectSpinStart, false);
4406 AddLocalPacketHandler(PacketType.ObjectSpinUpdate, HandleObjectSpinUpdate); 4428 AddLocalPacketHandler(PacketType.ObjectSpinUpdate, HandleObjectSpinUpdate, false);
4407 AddLocalPacketHandler(PacketType.ObjectSpinStop, HandleObjectSpinStop); 4429 AddLocalPacketHandler(PacketType.ObjectSpinStop, HandleObjectSpinStop, false);
4408 AddLocalPacketHandler(PacketType.ObjectDescription, HandleObjectDescription); 4430 AddLocalPacketHandler(PacketType.ObjectDescription, HandleObjectDescription, false);
4409 AddLocalPacketHandler(PacketType.ObjectName, HandleObjectName); 4431 AddLocalPacketHandler(PacketType.ObjectName, HandleObjectName, false);
4410 AddLocalPacketHandler(PacketType.ObjectPermissions, HandleObjectPermissions); 4432 AddLocalPacketHandler(PacketType.ObjectPermissions, HandleObjectPermissions, false);
4411 AddLocalPacketHandler(PacketType.Undo, HandleUndo); 4433 AddLocalPacketHandler(PacketType.Undo, HandleUndo, false);
4412 AddLocalPacketHandler(PacketType.ObjectDuplicateOnRay, HandleObjectDuplicateOnRay); 4434 AddLocalPacketHandler(PacketType.ObjectDuplicateOnRay, HandleObjectDuplicateOnRay);
4413 AddLocalPacketHandler(PacketType.RequestObjectPropertiesFamily, HandleRequestObjectPropertiesFamily); 4435 AddLocalPacketHandler(PacketType.RequestObjectPropertiesFamily, HandleRequestObjectPropertiesFamily, false);
4414 AddLocalPacketHandler(PacketType.ObjectIncludeInSearch, HandleObjectIncludeInSearch); 4436 AddLocalPacketHandler(PacketType.ObjectIncludeInSearch, HandleObjectIncludeInSearch);
4415 AddLocalPacketHandler(PacketType.ScriptAnswerYes, HandleScriptAnswerYes); 4437 AddLocalPacketHandler(PacketType.ScriptAnswerYes, HandleScriptAnswerYes, false);
4416 AddLocalPacketHandler(PacketType.ObjectClickAction, HandleObjectClickAction); 4438 AddLocalPacketHandler(PacketType.ObjectClickAction, HandleObjectClickAction, false);
4417 AddLocalPacketHandler(PacketType.ObjectMaterial, HandleObjectMaterial); 4439 AddLocalPacketHandler(PacketType.ObjectMaterial, HandleObjectMaterial, false);
4418 AddLocalPacketHandler(PacketType.RequestImage, HandleRequestImage); 4440 AddLocalPacketHandler(PacketType.RequestImage, HandleRequestImage);
4419 AddLocalPacketHandler(PacketType.TransferRequest, HandleTransferRequest); 4441 AddLocalPacketHandler(PacketType.TransferRequest, HandleTransferRequest);
4420 AddLocalPacketHandler(PacketType.AssetUploadRequest, HandleAssetUploadRequest); 4442 AddLocalPacketHandler(PacketType.AssetUploadRequest, HandleAssetUploadRequest);
@@ -4440,17 +4462,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4440 AddLocalPacketHandler(PacketType.RemoveTaskInventory, HandleRemoveTaskInventory); 4462 AddLocalPacketHandler(PacketType.RemoveTaskInventory, HandleRemoveTaskInventory);
4441 AddLocalPacketHandler(PacketType.MoveTaskInventory, HandleMoveTaskInventory); 4463 AddLocalPacketHandler(PacketType.MoveTaskInventory, HandleMoveTaskInventory);
4442 AddLocalPacketHandler(PacketType.RezScript, HandleRezScript); 4464 AddLocalPacketHandler(PacketType.RezScript, HandleRezScript);
4443 AddLocalPacketHandler(PacketType.MapLayerRequest, HandleMapLayerRequest); 4465 AddLocalPacketHandler(PacketType.MapLayerRequest, HandleMapLayerRequest, false);
4444 AddLocalPacketHandler(PacketType.MapBlockRequest, HandleMapBlockRequest); 4466 AddLocalPacketHandler(PacketType.MapBlockRequest, HandleMapBlockRequest, false);
4445 AddLocalPacketHandler(PacketType.MapNameRequest, HandleMapNameRequest); 4467 AddLocalPacketHandler(PacketType.MapNameRequest, HandleMapNameRequest, false);
4446 AddLocalPacketHandler(PacketType.TeleportLandmarkRequest, HandleTeleportLandmarkRequest); 4468 AddLocalPacketHandler(PacketType.TeleportLandmarkRequest, HandleTeleportLandmarkRequest);
4447 AddLocalPacketHandler(PacketType.TeleportLocationRequest, HandleTeleportLocationRequest); 4469 AddLocalPacketHandler(PacketType.TeleportLocationRequest, HandleTeleportLocationRequest);
4448 AddLocalPacketHandler(PacketType.UUIDNameRequest, HandleUUIDNameRequest); 4470 AddLocalPacketHandler(PacketType.UUIDNameRequest, HandleUUIDNameRequest, false);
4449 AddLocalPacketHandler(PacketType.RegionHandleRequest, HandleRegionHandleRequest); 4471 AddLocalPacketHandler(PacketType.RegionHandleRequest, HandleRegionHandleRequest);
4450 AddLocalPacketHandler(PacketType.ParcelInfoRequest, HandleParcelInfoRequest); 4472 AddLocalPacketHandler(PacketType.ParcelInfoRequest, HandleParcelInfoRequest, false);
4451 AddLocalPacketHandler(PacketType.ParcelAccessListRequest, HandleParcelAccessListRequest); 4473 AddLocalPacketHandler(PacketType.ParcelAccessListRequest, HandleParcelAccessListRequest, false);
4452 AddLocalPacketHandler(PacketType.ParcelAccessListUpdate, HandleParcelAccessListUpdate); 4474 AddLocalPacketHandler(PacketType.ParcelAccessListUpdate, HandleParcelAccessListUpdate, false);
4453 AddLocalPacketHandler(PacketType.ParcelPropertiesRequest, HandleParcelPropertiesRequest); 4475 AddLocalPacketHandler(PacketType.ParcelPropertiesRequest, HandleParcelPropertiesRequest, false);
4454 AddLocalPacketHandler(PacketType.ParcelDivide, HandleParcelDivide); 4476 AddLocalPacketHandler(PacketType.ParcelDivide, HandleParcelDivide);
4455 AddLocalPacketHandler(PacketType.ParcelJoin, HandleParcelJoin); 4477 AddLocalPacketHandler(PacketType.ParcelJoin, HandleParcelJoin);
4456 AddLocalPacketHandler(PacketType.ParcelPropertiesUpdate, HandleParcelPropertiesUpdate); 4478 AddLocalPacketHandler(PacketType.ParcelPropertiesUpdate, HandleParcelPropertiesUpdate);
@@ -4464,7 +4486,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4464 AddLocalPacketHandler(PacketType.LandStatRequest, HandleLandStatRequest); 4486 AddLocalPacketHandler(PacketType.LandStatRequest, HandleLandStatRequest);
4465 AddLocalPacketHandler(PacketType.ParcelDwellRequest, HandleParcelDwellRequest); 4487 AddLocalPacketHandler(PacketType.ParcelDwellRequest, HandleParcelDwellRequest);
4466 AddLocalPacketHandler(PacketType.EstateOwnerMessage, HandleEstateOwnerMessage); 4488 AddLocalPacketHandler(PacketType.EstateOwnerMessage, HandleEstateOwnerMessage);
4467 AddLocalPacketHandler(PacketType.RequestRegionInfo, HandleRequestRegionInfo); 4489 AddLocalPacketHandler(PacketType.RequestRegionInfo, HandleRequestRegionInfo, false);
4468 AddLocalPacketHandler(PacketType.EstateCovenantRequest, HandleEstateCovenantRequest); 4490 AddLocalPacketHandler(PacketType.EstateCovenantRequest, HandleEstateCovenantRequest);
4469 AddLocalPacketHandler(PacketType.RequestGodlikePowers, HandleRequestGodlikePowers); 4491 AddLocalPacketHandler(PacketType.RequestGodlikePowers, HandleRequestGodlikePowers);
4470 AddLocalPacketHandler(PacketType.GodKickUser, HandleGodKickUser); 4492 AddLocalPacketHandler(PacketType.GodKickUser, HandleGodKickUser);
@@ -4479,13 +4501,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4479 AddLocalPacketHandler(PacketType.ActivateGestures, HandleActivateGestures); 4501 AddLocalPacketHandler(PacketType.ActivateGestures, HandleActivateGestures);
4480 AddLocalPacketHandler(PacketType.DeactivateGestures, HandleDeactivateGestures); 4502 AddLocalPacketHandler(PacketType.DeactivateGestures, HandleDeactivateGestures);
4481 AddLocalPacketHandler(PacketType.ObjectOwner, HandleObjectOwner); 4503 AddLocalPacketHandler(PacketType.ObjectOwner, HandleObjectOwner);
4482 AddLocalPacketHandler(PacketType.AgentFOV, HandleAgentFOV); 4504 AddLocalPacketHandler(PacketType.AgentFOV, HandleAgentFOV, false);
4483 AddLocalPacketHandler(PacketType.ViewerStats, HandleViewerStats); 4505 AddLocalPacketHandler(PacketType.ViewerStats, HandleViewerStats);
4484 AddLocalPacketHandler(PacketType.MapItemRequest, HandleMapItemRequest); 4506 AddLocalPacketHandler(PacketType.MapItemRequest, HandleMapItemRequest, false);
4485 AddLocalPacketHandler(PacketType.TransferAbort, HandleTransferAbort); 4507 AddLocalPacketHandler(PacketType.TransferAbort, HandleTransferAbort, false);
4486 AddLocalPacketHandler(PacketType.MuteListRequest, HandleMuteListRequest); 4508 AddLocalPacketHandler(PacketType.MuteListRequest, HandleMuteListRequest, false);
4487 AddLocalPacketHandler(PacketType.UseCircuitCode, HandleUseCircuitCode); 4509 AddLocalPacketHandler(PacketType.UseCircuitCode, HandleUseCircuitCode);
4488 AddLocalPacketHandler(PacketType.AgentHeightWidth, HandleAgentHeightWidth); 4510 AddLocalPacketHandler(PacketType.AgentHeightWidth, HandleAgentHeightWidth, false);
4489 AddLocalPacketHandler(PacketType.InventoryDescendents, HandleInventoryDescendents); 4511 AddLocalPacketHandler(PacketType.InventoryDescendents, HandleInventoryDescendents);
4490 AddLocalPacketHandler(PacketType.DirPlacesQuery, HandleDirPlacesQuery); 4512 AddLocalPacketHandler(PacketType.DirPlacesQuery, HandleDirPlacesQuery);
4491 AddLocalPacketHandler(PacketType.DirFindQuery, HandleDirFindQuery); 4513 AddLocalPacketHandler(PacketType.DirFindQuery, HandleDirFindQuery);
@@ -15757,6 +15779,26 @@ namespace OpenSim.Region.ClientStack.LindenUDP
15757 } 15779 }
15758 #endregion 15780 #endregion
15759 } 15781 }
15782
15783 public struct PacketProcessor
15784 {
15785 public PacketMethod method;
15786 public bool Async;
15787 }
15788 public class AsyncPacketProcess
15789 {
15790 public bool result = false;
15791 public readonly LLClientView ClientView = null;
15792 public readonly Packet Pack = null;
15793 public readonly PacketMethod Method = null;
15794 public AsyncPacketProcess(LLClientView pClientview, PacketMethod pMethod, Packet pPack)
15795 {
15796 ClientView = pClientview;
15797 Method = pMethod;
15798 Pack = pPack;
15799 }
15800 }
15801
15760 #endregion 15802 #endregion
15761 15803
15762 public static OSD BuildEvent(string eventName, OSD eventBody) 15804 public static OSD BuildEvent(string eventName, OSD eventBody)
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
index 338f2bb..3c4fa72 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
@@ -943,7 +943,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
943 } 943 }
944 944
945 if (packetInbox.Dequeue(100, ref incomingPacket)) 945 if (packetInbox.Dequeue(100, ref incomingPacket))
946 Util.FireAndForget(ProcessInPacket, incomingPacket); 946 ProcessInPacket(incomingPacket);//, incomingPacket); Util.FireAndForget(ProcessInPacket, incomingPacket);
947 } 947 }
948 catch (Exception ex) 948 catch (Exception ex)
949 { 949 {