aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs69
1 files changed, 52 insertions, 17 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
index ff31ef5..82fad11 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
@@ -34,6 +34,7 @@ using System.Net.Sockets;
34using System.Reflection; 34using System.Reflection;
35using System.Threading; 35using System.Threading;
36using log4net; 36using log4net;
37using NDesk.Options;
37using Nini.Config; 38using Nini.Config;
38using OpenMetaverse.Packets; 39using OpenMetaverse.Packets;
39using OpenSim.Framework; 40using OpenSim.Framework;
@@ -102,10 +103,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP
102 /// </summary> 103 /// </summary>
103 public class LLUDPServer : OpenSimUDPBase 104 public class LLUDPServer : OpenSimUDPBase
104 { 105 {
106 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
107
105 /// <summary>Maximum transmission unit, or UDP packet size, for the LLUDP protocol</summary> 108 /// <summary>Maximum transmission unit, or UDP packet size, for the LLUDP protocol</summary>
106 public const int MTU = 1400; 109 public const int MTU = 1400;
107 110
108 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 111 /// <summary>
112 /// Default packet debug level given to new clients
113 /// </summary>
114 public int DefaultClientPacketDebugLevel { get; set; }
109 115
110 /// <summary>The measured resolution of Environment.TickCount</summary> 116 /// <summary>The measured resolution of Environment.TickCount</summary>
111 public readonly float TickCountResolution; 117 public readonly float TickCountResolution;
@@ -514,7 +520,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
514 520
515 MainConsole.Instance.Commands.AddCommand( 521 MainConsole.Instance.Commands.AddCommand(
516 "Debug", false, "debug lludp packet", 522 "Debug", false, "debug lludp packet",
517 "debug lludp packet <level> [<avatar-first-name> <avatar-last-name>]", 523 "debug lludp packet [--default] <level> [<avatar-first-name> <avatar-last-name>]",
518 "Turn on packet debugging", 524 "Turn on packet debugging",
519 "If level > 255 then all incoming and outgoing packets are logged.\n" 525 "If level > 255 then all incoming and outgoing packets are logged.\n"
520 + "If level <= 255 then incoming AgentUpdate and outgoing SimStats and SimulatorViewerTimeMessage packets are not logged.\n" 526 + "If level <= 255 then incoming AgentUpdate and outgoing SimStats and SimulatorViewerTimeMessage packets are not logged.\n"
@@ -522,7 +528,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
522 + "If level <= 100 then incoming ViewerEffect and AgentAnimation and outgoing ViewerEffect and AvatarAnimation packets are not logged.\n" 528 + "If level <= 100 then incoming ViewerEffect and AgentAnimation and outgoing ViewerEffect and AvatarAnimation packets are not logged.\n"
523 + "If level <= 50 then outgoing ImprovedTerseObjectUpdate packets are not logged.\n" 529 + "If level <= 50 then outgoing ImprovedTerseObjectUpdate packets are not logged.\n"
524 + "If level <= 0 then no packets are logged.\n" 530 + "If level <= 0 then no packets are logged.\n"
525 + "If an avatar name is given then only packets from that avatar are logged", 531 + "If --default is specified then the level becomes the default logging level for all subsequent agents.\n"
532 + "In this case, you cannot also specify an avatar name.\n"
533 + "If an avatar name is given then only packets from that avatar are logged.",
526 HandlePacketCommand); 534 HandlePacketCommand);
527 535
528 MainConsole.Instance.Commands.AddCommand( 536 MainConsole.Instance.Commands.AddCommand(
@@ -571,31 +579,54 @@ namespace OpenSim.Region.ClientStack.LindenUDP
571 if (SceneManager.Instance.CurrentScene != null && SceneManager.Instance.CurrentScene != m_scene) 579 if (SceneManager.Instance.CurrentScene != null && SceneManager.Instance.CurrentScene != m_scene)
572 return; 580 return;
573 581
582 bool setAsDefaultLevel = false;
583 OptionSet optionSet = new OptionSet().Add("default", o => setAsDefaultLevel = o != null);
584 List<string> filteredArgs = optionSet.Parse(args);
585
574 string name = null; 586 string name = null;
575 587
576 if (args.Length == 6) 588 if (filteredArgs.Count == 6)
577 name = string.Format("{0} {1}", args[4], args[5]); 589 {
590 if (!setAsDefaultLevel)
591 {
592 name = string.Format("{0} {1}", filteredArgs[4], filteredArgs[5]);
593 }
594 else
595 {
596 MainConsole.Instance.OutputFormat("ERROR: Cannot specify a user name when setting default logging level");
597 return;
598 }
599 }
578 600
579 if (args.Length > 3) 601 if (filteredArgs.Count > 3)
580 { 602 {
581 int newDebug; 603 int newDebug;
582 if (int.TryParse(args[3], out newDebug)) 604 if (int.TryParse(filteredArgs[3], out newDebug))
583 { 605 {
584 m_scene.ForEachScenePresence(sp => 606 if (setAsDefaultLevel)
607 {
608 DefaultClientPacketDebugLevel = newDebug;
609 MainConsole.Instance.OutputFormat(
610 "Debug packet debug for new clients set to {0}", DefaultClientPacketDebugLevel);
611 }
612 else
585 { 613 {
586 if (name == null || sp.Name == name) 614 m_scene.ForEachScenePresence(sp =>
587 { 615 {
588 m_log.DebugFormat( 616 if (name == null || sp.Name == name)
589 "Packet debug for {0} ({1}) set to {2} in {3}", 617 {
590 sp.Name, sp.IsChildAgent ? "child" : "root", newDebug, m_scene.Name); 618 MainConsole.Instance.OutputFormat(
591 619 "Packet debug for {0} ({1}) set to {2} in {3}",
592 sp.ControllingClient.DebugPacketLevel = newDebug; 620 sp.Name, sp.IsChildAgent ? "child" : "root", newDebug, m_scene.Name);
593 } 621
594 }); 622 sp.ControllingClient.DebugPacketLevel = newDebug;
623 }
624 });
625 }
595 } 626 }
596 else 627 else
597 { 628 {
598 MainConsole.Instance.Output("Usage: debug lludp packet 0..255 [<first-name> <last-name>]"); 629 MainConsole.Instance.Output("Usage: debug lludp packet [--default] 0..255 [<first-name> <last-name>]");
599 } 630 }
600 } 631 }
601 } 632 }
@@ -687,6 +718,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
687 "OUT LLUDP packet processing for {0} is {1}", m_scene.Name, IsRunningOutbound ? "enabled" : "disabled"); 718 "OUT LLUDP packet processing for {0} is {1}", m_scene.Name, IsRunningOutbound ? "enabled" : "disabled");
688 719
689 MainConsole.Instance.OutputFormat("LLUDP pools in {0} are {1}", m_scene.Name, UsePools ? "on" : "off"); 720 MainConsole.Instance.OutputFormat("LLUDP pools in {0} are {1}", m_scene.Name, UsePools ? "on" : "off");
721
722 MainConsole.Instance.OutputFormat(
723 "Packet debug level for new clients is {0}", DefaultClientPacketDebugLevel);
690 } 724 }
691 725
692 public bool HandlesRegion(Location x) 726 public bool HandlesRegion(Location x)
@@ -1533,6 +1567,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1533 1567
1534 client = new LLClientView(m_scene, this, udpClient, sessionInfo, agentID, sessionID, circuitCode); 1568 client = new LLClientView(m_scene, this, udpClient, sessionInfo, agentID, sessionID, circuitCode);
1535 client.OnLogout += LogoutHandler; 1569 client.OnLogout += LogoutHandler;
1570 client.DebugPacketLevel = DefaultClientPacketDebugLevel;
1536 1571
1537 ((LLClientView)client).DisableFacelights = m_disableFacelights; 1572 ((LLClientView)client).DisableFacelights = m_disableFacelights;
1538 1573