Merge branch 'master' of ssh://opensimulator.org/var/git/opensim

This commit is contained in:
Diva Canto
2015-01-22 10:45:46 -08:00
26 changed files with 384 additions and 263 deletions

View File

@@ -97,7 +97,7 @@ namespace OpenSim.Capabilities.Handlers
osdname["display_name"] = OSD.FromString(name);
osdname["legacy_first_name"] = parts[0];
osdname["legacy_last_name"] = parts[1];
osdname["username"] = OSD.FromString(name);
osdname["username"] = "";
osdname["id"] = OSD.FromUUID(uuid);
osdname["is_display_name_default"] = OSD.FromBoolean(false);

View File

@@ -72,7 +72,7 @@ namespace OpenSim.Framework.Servers.HttpServer
}
catch (Exception ex)
{
m_log.Warn(string.Format("[POLL SERVICE WORKER THREAD]: Error ", ex));
m_log.Warn("[POLL SERVICE WORKER THREAD]: Error ", ex);
}
finally
{
@@ -87,7 +87,7 @@ namespace OpenSim.Framework.Servers.HttpServer
}
catch (Exception e)
{
m_log.Warn(String.Format("[POLL SERVICE WORKER THREAD]: Error ", e));
m_log.Warn("[POLL SERVICE WORKER THREAD]: Error ", e);
}
PollServiceArgs.RequestsHandled++;

View File

@@ -235,7 +235,7 @@ namespace OpenSim.Region.ClientStack.Linden
private Hashtable HandleSimulatorFeaturesRequest(Hashtable mDhttpMethod, UUID agentID)
{
m_log.DebugFormat("[SIMULATOR FEATURES MODULE]: SimulatorFeatures request");
// m_log.DebugFormat("[SIMULATOR FEATURES MODULE]: SimulatorFeatures request");
OSDMap copy = DeepCopy();

View File

@@ -119,8 +119,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public readonly uint CircuitCode;
/// <summary>Sequence numbers of packets we've received (for duplicate checking)</summary>
public readonly IncomingPacketHistoryCollection PacketArchive = new IncomingPacketHistoryCollection(200);
/// <summary>
/// If true then we take action in response to unacked reliably sent packets such as resending the packet.
/// </summary>
public bool ProcessUnackedSends { get; set; }
/// <summary>Packets we have sent that need to be ACKed by the client</summary>
public readonly UnackedPacketCollection NeedAcks = new UnackedPacketCollection();
/// <summary>ACKs that are queued up, waiting to be sent to the client</summary>
public readonly OpenSim.Framework.LocklessQueue<uint> PendingAcks = new OpenSim.Framework.LocklessQueue<uint>();
@@ -225,6 +232,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if (maxRTO != 0)
m_maxRTO = maxRTO;
ProcessUnackedSends = true;
// Create a token bucket throttle for this client that has the scene token bucket as a parent
m_throttleClient
= new AdaptiveTokenBucket(

View File

@@ -1137,7 +1137,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
Utils.UIntToBytesBig(sequenceNumber, buffer.Data, 1);
outgoingPacket.SequenceNumber = sequenceNumber;
if (isReliable)
if (udpClient.ProcessUnackedSends && isReliable)
{
// Add this packet to the list of ACK responses we are waiting on from the server
udpClient.NeedAcks.Add(outgoingPacket);
@@ -1325,30 +1325,37 @@ namespace OpenSim.Region.ClientStack.LindenUDP
#region ACK Receiving
// Handle appended ACKs
if (packet.Header.AppendedAcks && packet.Header.AckList != null)
if (udpClient.ProcessUnackedSends)
{
// m_log.DebugFormat(
// "[LLUDPSERVER]: Handling {0} appended acks from {1} in {2}",
// packet.Header.AckList.Length, client.Name, m_scene.Name);
// Handle appended ACKs
if (packet.Header.AppendedAcks && packet.Header.AckList != null)
{
// m_log.DebugFormat(
// "[LLUDPSERVER]: Handling {0} appended acks from {1} in {2}",
// packet.Header.AckList.Length, client.Name, m_scene.Name);
for (int i = 0; i < packet.Header.AckList.Length; i++)
udpClient.NeedAcks.Acknowledge(packet.Header.AckList[i], now, packet.Header.Resent);
for (int i = 0; i < packet.Header.AckList.Length; i++)
udpClient.NeedAcks.Acknowledge(packet.Header.AckList[i], now, packet.Header.Resent);
}
// Handle PacketAck packets
if (packet.Type == PacketType.PacketAck)
{
PacketAckPacket ackPacket = (PacketAckPacket)packet;
// m_log.DebugFormat(
// "[LLUDPSERVER]: Handling {0} packet acks for {1} in {2}",
// ackPacket.Packets.Length, client.Name, m_scene.Name);
for (int i = 0; i < ackPacket.Packets.Length; i++)
udpClient.NeedAcks.Acknowledge(ackPacket.Packets[i].ID, now, packet.Header.Resent);
// We don't need to do anything else with PacketAck packets
return;
}
}
// Handle PacketAck packets
if (packet.Type == PacketType.PacketAck)
else if (packet.Type == PacketType.PacketAck)
{
PacketAckPacket ackPacket = (PacketAckPacket)packet;
// m_log.DebugFormat(
// "[LLUDPSERVER]: Handling {0} packet acks for {1} in {2}",
// ackPacket.Packets.Length, client.Name, m_scene.Name);
for (int i = 0; i < ackPacket.Packets.Length; i++)
udpClient.NeedAcks.Acknowledge(ackPacket.Packets[i].ID, now, packet.Header.Resent);
// We don't need to do anything else with PacketAck packets
return;
}
@@ -2011,7 +2018,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if (udpClient.IsConnected)
{
if (m_resendUnacked)
if (udpClient.ProcessUnackedSends && m_resendUnacked)
HandleUnacked(llClient);
if (m_sendAcks)

View File

@@ -195,6 +195,24 @@ namespace OpenSim.Region.ClientStack.LindenUDP
"Start, stop or get status of OutgoingQueueRefillEngine.",
"If stopped then refill requests are processed directly via the threadpool.",
HandleOqreCommand);
m_console.Commands.AddCommand(
"Debug",
false,
"debug lludp client get",
"debug lludp client get [<avatar-first-name> <avatar-last-name>]",
"Get debug parameters for the client. If no name is given then all client information is returned.",
"process-unacked-sends - Do we take action if a sent reliable packet has not been acked.",
HandleClientGetCommand);
m_console.Commands.AddCommand(
"Debug",
false,
"debug lludp client set",
"debug lludp client set <param> <value> [<avatar-first-name> <avatar-last-name>]",
"Set a debug parameter for a particular client. If no name is given then the value is set on all clients.",
"process-unacked-sends - Do we take action if a sent reliable packet has not been acked.",
HandleClientSetCommand);
}
private void HandleShowServerThrottlesCommand(string module, string[] args)
@@ -538,6 +556,81 @@ namespace OpenSim.Region.ClientStack.LindenUDP
m_console.OutputFormat("{0} set to {1} in {2}", param, rawValue, m_udpServer.Scene.Name);
}
private void HandleClientGetCommand(string module, string[] args)
{
if (SceneManager.Instance.CurrentScene != null && SceneManager.Instance.CurrentScene != m_udpServer.Scene)
return;
if (args.Length != 4 && args.Length != 6)
{
MainConsole.Instance.OutputFormat("Usage: debug lludp client get [<avatar-first-name> <avatar-last-name>]");
return;
}
string name = null;
if (args.Length == 6)
name = string.Format("{0} {1}", args[4], args[5]);
m_udpServer.Scene.ForEachScenePresence(
sp =>
{
if ((name == null || sp.Name == name) && sp.ControllingClient is LLClientView)
{
LLUDPClient udpClient = ((LLClientView)sp.ControllingClient).UDPClient;
m_console.OutputFormat(
"Client debug parameters for {0} ({1}) in {2}",
sp.Name, sp.IsChildAgent ? "child" : "root", m_udpServer.Scene.Name);
ConsoleDisplayList cdl = new ConsoleDisplayList();
cdl.AddRow("process-unacked-sends", udpClient.ProcessUnackedSends);
m_console.Output(cdl.ToString());
}
});
}
private void HandleClientSetCommand(string module, string[] args)
{
if (SceneManager.Instance.CurrentScene != null && SceneManager.Instance.CurrentScene != m_udpServer.Scene)
return;
if (args.Length != 6 && args.Length != 8)
{
MainConsole.Instance.OutputFormat("Usage: debug lludp client set <param> <value> [<avatar-first-name> <avatar-last-name>]");
return;
}
string param = args[4];
string rawValue = args[5];
string name = null;
if (args.Length == 8)
name = string.Format("{0} {1}", args[6], args[7]);
if (param == "process-unacked-sends")
{
bool newValue;
if (!ConsoleUtil.TryParseConsoleBool(MainConsole.Instance, rawValue, out newValue))
return;
m_udpServer.Scene.ForEachScenePresence(
sp =>
{
if ((name == null || sp.Name == name) && sp.ControllingClient is LLClientView)
{
LLUDPClient udpClient = ((LLClientView)sp.ControllingClient).UDPClient;
udpClient.ProcessUnackedSends = newValue;
m_console.OutputFormat("{0} set to {1} for {2} in {3}", param, newValue, sp.Name, m_udpServer.Scene.Name);
}
});
}
}
private void HandlePacketCommand(string module, string[] args)
{
if (SceneManager.Instance.CurrentScene != null && SceneManager.Instance.CurrentScene != m_udpServer.Scene)

View File

@@ -40,7 +40,7 @@ using OpenSim.Framework;
using OpenSim.Region.Framework;
using OpenSim.Framework.Client;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes.Serialization;
using OpenSim.Region.Framework.Scenes.Serialization;
using OpenSim.Services.Interfaces;
using PermissionMask = OpenSim.Framework.PermissionMask;
@@ -127,11 +127,11 @@ namespace OpenSim.Region.Framework.Scenes
return false;
}
}
public bool AddInventoryItem(InventoryItemBase item)
{
return AddInventoryItem(item, true);
}
public bool AddInventoryItem(InventoryItemBase item)
{
return AddInventoryItem(item, true);
}
/// <summary>
@@ -1074,7 +1074,7 @@ namespace OpenSim.Region.Framework.Scenes
// }
CreateNewInventoryItem(
remoteClient, remoteClient.AgentId.ToString(), string.Empty, folderID,
remoteClient, remoteClient.AgentId.ToString(), string.Empty, folderID,
name, description, 0, callbackID, olditemID, type, invType,
(uint)PermissionMask.All | (uint)PermissionMask.Export, (uint)PermissionMask.All | (uint)PermissionMask.Export, (uint)PermissionMask.All,
(uint)PermissionMask.All | (uint)PermissionMask.Export, (uint)PermissionMask.All | (uint)PermissionMask.Export, Util.UnixTimeSinceEpoch(),
@@ -2183,7 +2183,7 @@ namespace OpenSim.Region.Framework.Scenes
}
}
// OK, we're done with permissions. Let's check if any part of the code prevents the objects from being deleted
// OK, we're done with permissions. Let's check if any part of the code prevents the objects from being deleted
bool canDelete = EventManager.TriggerDeRezRequested(remoteClient, deleteGroups, action);
if (permissionToTake && (action != DeRezAction.Delete || this.m_useTrashOnDelete))

View File

@@ -487,7 +487,16 @@ namespace OpenSim.Region.Framework.Scenes
void SendInventoryAsync(IClientAPI remoteClient, UUID folderID, UUID ownerID, bool fetchFolders, bool fetchItems, int sortOrder)
{
SendInventoryUpdate(remoteClient, new InventoryFolderBase(folderID), fetchFolders, fetchItems);
try
{
SendInventoryUpdate(remoteClient, new InventoryFolderBase(folderID), fetchFolders, fetchItems);
}
catch (Exception e)
{
m_log.Error(
string.Format(
"[AGENT INVENTORY]: Error in SendInventoryAsync() for {0} with folder ID {1}. Exception ", e));
}
}
void SendInventoryComplete(IAsyncResult iar)

View File

@@ -52,7 +52,7 @@ namespace OpenSim.Region.Framework.Scenes
public class SceneCommunicationService //one instance per region
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static string LogHeader = "[SCENE COMMUNIATION SERVICE]";
private static string LogHeader = "[SCENE COMMUNICATION SERVICE]";
protected RegionInfo m_regionInfo;
protected Scene m_scene;

View File

@@ -4836,7 +4836,10 @@ namespace OpenSim.Region.Framework.Scenes
if (OwnerID != item.Owner)
{
//LogPermissions("Before ApplyNextOwnerPermissions");
ApplyNextOwnerPermissions();
if (scene.Permissions.PropagatePermissions())
ApplyNextOwnerPermissions();
//LogPermissions("After ApplyNextOwnerPermissions");
LastOwnerID = OwnerID;

View File

@@ -84,16 +84,16 @@ namespace OpenSim.Services.Connectors
{
if (String.IsNullOrEmpty(m_ServerURI))
{
m_log.WarnFormat("[HELO SERVICE]: Unable to invoke HELO due to malformed URL");
m_log.WarnFormat("[HELO SERVICE]: Unable to invoke HELO due to empty URL");
return String.Empty;
}
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(m_ServerURI);
// Eventually we need to switch to HEAD
/* req.Method = "HEAD"; */
try
{
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(m_ServerURI);
// Eventually we need to switch to HEAD
/* req.Method = "HEAD"; */
using (WebResponse response = req.GetResponse())
{
if (response.Headers.Get("X-Handlers-Provided") == null) // just in case this ever returns a null

View File

@@ -196,6 +196,9 @@ namespace OpenSim.Services.ProfilesService
public bool UserPreferencesRequest(ref UserPreferences pref, ref string result)
{
if (!ProfilesData.GetUserPreferences(ref pref, ref result))
return false;
if(string.IsNullOrEmpty(pref.EMail))
{
UserAccount account = new UserAccount();
@@ -228,9 +231,6 @@ namespace OpenSim.Services.ProfilesService
return false;
}
}
if (!ProfilesData.GetUserPreferences (ref pref, ref result))
return false;
if(string.IsNullOrEmpty(pref.EMail))
pref.EMail = "No Email Address On Record";

View File

@@ -43,7 +43,7 @@ namespace pCampBot
/// </summary>
public class PhysicsBehaviour2 : AbstractBehaviour
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public PhysicsBehaviour2()
{

View File

@@ -44,7 +44,7 @@ namespace pCampBot
/// </summary>
public class TwitchyBehaviour : AbstractBehaviour
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public TwitchyBehaviour()
{