aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs6
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs47
2 files changed, 52 insertions, 1 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs
index c34bafa..9dc9e0d 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs
@@ -76,6 +76,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
76 /// or removed, this number must also change</summary> 76 /// or removed, this number must also change</summary>
77 const int THROTTLE_CATEGORY_COUNT = 8; 77 const int THROTTLE_CATEGORY_COUNT = 8;
78 78
79 /// <summary>
80 /// Controls whether information is logged about each outbound packet immediately before it is sent. For debug purposes.
81 /// </summary>
82 /// <remarks>Any level above 0 will turn on logging.</remarks>
83 public int DebugDataOutLevel { get; set; }
84
79 /// <summary>Fired when updated networking stats are produced for this client</summary> 85 /// <summary>Fired when updated networking stats are produced for this client</summary>
80 public event PacketStats OnPacketStats; 86 public event PacketStats OnPacketStats;
81 /// <summary>Fired when the queue for a packet category is empty. This event can be 87 /// <summary>Fired when the queue for a packet category is empty. This event can be
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
index e879e76..0393a29 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
@@ -686,7 +686,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
686 MainConsole.Instance.Commands.AddCommand( 686 MainConsole.Instance.Commands.AddCommand(
687 "Debug", false, "debug lludp packet", 687 "Debug", false, "debug lludp packet",
688 "debug lludp packet [--default | --all] <level> [<avatar-first-name> <avatar-last-name>]", 688 "debug lludp packet [--default | --all] <level> [<avatar-first-name> <avatar-last-name>]",
689 "Turn on packet debugging", 689 "Turn on packet debugging. This logs information when the client stack hands a processed packet off to downstream code or when upstream code first requests that a certain packet be sent.",
690 "If level > 255 then all incoming and outgoing packets are logged.\n" 690 "If level > 255 then all incoming and outgoing packets are logged.\n"
691 + "If level <= 255 then incoming AgentUpdate and outgoing SimStats and SimulatorViewerTimeMessage packets are not logged.\n" 691 + "If level <= 255 then incoming AgentUpdate and outgoing SimStats and SimulatorViewerTimeMessage packets are not logged.\n"
692 + "If level <= 200 then incoming RequestImage and outgoing ImagePacket, ImageData, LayerData and CoarseLocationUpdate packets are not logged.\n" 692 + "If level <= 200 then incoming RequestImage and outgoing ImagePacket, ImageData, LayerData and CoarseLocationUpdate packets are not logged.\n"
@@ -700,6 +700,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP
700 HandlePacketCommand); 700 HandlePacketCommand);
701 701
702 MainConsole.Instance.Commands.AddCommand( 702 MainConsole.Instance.Commands.AddCommand(
703 "Debug", false, "debug lludp data out",
704 "debug lludp data out <level> <avatar-first-name> <avatar-last-name>\"",
705 "Turn on debugging for final outgoing data to the given user's client.",
706 "This operates at a much lower level than the packet command and prints out available details when the data is actually sent.\n"
707 + "If level > 0 then information about all outgoing UDP data for this avatar is logged.\n"
708 + "If level <= 0 then no information about outgoing UDP data for this avatar is logged.",
709 HandleDataCommand);
710
711 MainConsole.Instance.Commands.AddCommand(
703 "Debug", false, "debug lludp drop", 712 "Debug", false, "debug lludp drop",
704 "debug lludp drop <in|out> <add|remove> <packet-name>", 713 "debug lludp drop <in|out> <add|remove> <packet-name>",
705 "Drop all in or outbound packets that match the given name", 714 "Drop all in or outbound packets that match the given name",
@@ -755,6 +764,37 @@ namespace OpenSim.Region.ClientStack.LindenUDP
755 HandleAgentUpdateCommand); 764 HandleAgentUpdateCommand);
756 } 765 }
757 766
767 private void HandleDataCommand(string module, string[] args)
768 {
769 if (SceneManager.Instance.CurrentScene != null && SceneManager.Instance.CurrentScene != Scene)
770 return;
771
772 if (args.Length != 7)
773 {
774 MainConsole.Instance.OutputFormat("Usage: debug lludp data out <true|false> <avatar-first-name> <avatar-last-name>");
775 return;
776 }
777
778 int level;
779 if (!ConsoleUtil.TryParseConsoleInt(MainConsole.Instance, args[4], out level))
780 return;
781
782 string firstName = args[5];
783 string lastName = args[6];
784
785 Scene.ForEachScenePresence(sp =>
786 {
787 if (sp.Firstname == firstName && sp.Lastname == lastName)
788 {
789 MainConsole.Instance.OutputFormat(
790 "Data debug for {0} ({1}) set to {2} in {3}",
791 sp.Name, sp.IsChildAgent ? "child" : "root", level, Scene.Name);
792
793 ((LLClientView)sp.ControllingClient).UDPClient.DebugDataOutLevel = level;
794 }
795 });
796 }
797
758 private void HandlePacketCommand(string module, string[] args) 798 private void HandlePacketCommand(string module, string[] args)
759 { 799 {
760 if (SceneManager.Instance.CurrentScene != null && SceneManager.Instance.CurrentScene != Scene) 800 if (SceneManager.Instance.CurrentScene != null && SceneManager.Instance.CurrentScene != Scene)
@@ -1360,6 +1400,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1360 // is 100% correct 1400 // is 100% correct
1361 PacketsSentCount++; 1401 PacketsSentCount++;
1362 1402
1403 if (udpClient.DebugDataOutLevel > 0)
1404 m_log.DebugFormat(
1405 "[LLUDPSERVER]: Sending packet #{0} (rel: {1}, res: {2}) to {3} from {4}",
1406 outgoingPacket.SequenceNumber, isReliable, isResend, udpClient.AgentID, Scene.Name);
1407
1363 // Put the UDP payload on the wire 1408 // Put the UDP payload on the wire
1364 AsyncBeginSend(buffer); 1409 AsyncBeginSend(buffer);
1365 1410