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

0.8.1-post-fixes
Diva Canto 2015-01-22 10:45:46 -08:00
commit edc155c636
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["display_name"] = OSD.FromString(name);
osdname["legacy_first_name"] = parts[0]; osdname["legacy_first_name"] = parts[0];
osdname["legacy_last_name"] = parts[1]; osdname["legacy_last_name"] = parts[1];
osdname["username"] = OSD.FromString(name); osdname["username"] = "";
osdname["id"] = OSD.FromUUID(uuid); osdname["id"] = OSD.FromUUID(uuid);
osdname["is_display_name_default"] = OSD.FromBoolean(false); osdname["is_display_name_default"] = OSD.FromBoolean(false);

View File

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

View File

@ -235,7 +235,7 @@ namespace OpenSim.Region.ClientStack.Linden
private Hashtable HandleSimulatorFeaturesRequest(Hashtable mDhttpMethod, UUID agentID) 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(); OSDMap copy = DeepCopy();

View File

@ -119,8 +119,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public readonly uint CircuitCode; public readonly uint CircuitCode;
/// <summary>Sequence numbers of packets we've received (for duplicate checking)</summary> /// <summary>Sequence numbers of packets we've received (for duplicate checking)</summary>
public readonly IncomingPacketHistoryCollection PacketArchive = new IncomingPacketHistoryCollection(200); 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> /// <summary>Packets we have sent that need to be ACKed by the client</summary>
public readonly UnackedPacketCollection NeedAcks = new UnackedPacketCollection(); public readonly UnackedPacketCollection NeedAcks = new UnackedPacketCollection();
/// <summary>ACKs that are queued up, waiting to be sent to the client</summary> /// <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>(); public readonly OpenSim.Framework.LocklessQueue<uint> PendingAcks = new OpenSim.Framework.LocklessQueue<uint>();
@ -225,6 +232,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if (maxRTO != 0) if (maxRTO != 0)
m_maxRTO = maxRTO; m_maxRTO = maxRTO;
ProcessUnackedSends = true;
// Create a token bucket throttle for this client that has the scene token bucket as a parent // Create a token bucket throttle for this client that has the scene token bucket as a parent
m_throttleClient m_throttleClient
= new AdaptiveTokenBucket( = new AdaptiveTokenBucket(

View File

@ -1137,7 +1137,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
Utils.UIntToBytesBig(sequenceNumber, buffer.Data, 1); Utils.UIntToBytesBig(sequenceNumber, buffer.Data, 1);
outgoingPacket.SequenceNumber = sequenceNumber; 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 // Add this packet to the list of ACK responses we are waiting on from the server
udpClient.NeedAcks.Add(outgoingPacket); udpClient.NeedAcks.Add(outgoingPacket);
@ -1325,6 +1325,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
#region ACK Receiving #region ACK Receiving
if (udpClient.ProcessUnackedSends)
{
// Handle appended ACKs // Handle appended ACKs
if (packet.Header.AppendedAcks && packet.Header.AckList != null) if (packet.Header.AppendedAcks && packet.Header.AckList != null)
{ {
@ -1351,6 +1353,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// We don't need to do anything else with PacketAck packets // We don't need to do anything else with PacketAck packets
return; return;
} }
}
else if (packet.Type == PacketType.PacketAck)
{
return;
}
#endregion ACK Receiving #endregion ACK Receiving
@ -2011,7 +2018,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if (udpClient.IsConnected) if (udpClient.IsConnected)
{ {
if (m_resendUnacked) if (udpClient.ProcessUnackedSends && m_resendUnacked)
HandleUnacked(llClient); HandleUnacked(llClient);
if (m_sendAcks) if (m_sendAcks)

View File

@ -195,6 +195,24 @@ namespace OpenSim.Region.ClientStack.LindenUDP
"Start, stop or get status of OutgoingQueueRefillEngine.", "Start, stop or get status of OutgoingQueueRefillEngine.",
"If stopped then refill requests are processed directly via the threadpool.", "If stopped then refill requests are processed directly via the threadpool.",
HandleOqreCommand); 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) 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); 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) private void HandlePacketCommand(string module, string[] args)
{ {
if (SceneManager.Instance.CurrentScene != null && SceneManager.Instance.CurrentScene != m_udpServer.Scene) if (SceneManager.Instance.CurrentScene != null && SceneManager.Instance.CurrentScene != m_udpServer.Scene)

View File

@ -486,9 +486,18 @@ namespace OpenSim.Region.Framework.Scenes
delegate void SendInventoryDelegate(IClientAPI remoteClient, UUID folderID, UUID ownerID, bool fetchFolders, bool fetchItems, int sortOrder); delegate void SendInventoryDelegate(IClientAPI remoteClient, UUID folderID, UUID ownerID, bool fetchFolders, bool fetchItems, int sortOrder);
void SendInventoryAsync(IClientAPI remoteClient, UUID folderID, UUID ownerID, bool fetchFolders, bool fetchItems, int sortOrder) void SendInventoryAsync(IClientAPI remoteClient, UUID folderID, UUID ownerID, bool fetchFolders, bool fetchItems, int sortOrder)
{
try
{ {
SendInventoryUpdate(remoteClient, new InventoryFolderBase(folderID), fetchFolders, fetchItems); 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) void SendInventoryComplete(IAsyncResult iar)
{ {

View File

@ -52,7 +52,7 @@ namespace OpenSim.Region.Framework.Scenes
public class SceneCommunicationService //one instance per region public class SceneCommunicationService //one instance per region
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 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 RegionInfo m_regionInfo;
protected Scene m_scene; protected Scene m_scene;

View File

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

View File

@ -84,16 +84,16 @@ namespace OpenSim.Services.Connectors
{ {
if (String.IsNullOrEmpty(m_ServerURI)) 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; return String.Empty;
} }
try
{
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(m_ServerURI); HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(m_ServerURI);
// Eventually we need to switch to HEAD // Eventually we need to switch to HEAD
/* req.Method = "HEAD"; */ /* req.Method = "HEAD"; */
try
{
using (WebResponse response = req.GetResponse()) using (WebResponse response = req.GetResponse())
{ {
if (response.Headers.Get("X-Handlers-Provided") == null) // just in case this ever returns a null 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) public bool UserPreferencesRequest(ref UserPreferences pref, ref string result)
{ {
if (!ProfilesData.GetUserPreferences(ref pref, ref result))
return false;
if(string.IsNullOrEmpty(pref.EMail)) if(string.IsNullOrEmpty(pref.EMail))
{ {
UserAccount account = new UserAccount(); UserAccount account = new UserAccount();
@ -228,9 +231,6 @@ namespace OpenSim.Services.ProfilesService
return false; return false;
} }
} }
if (!ProfilesData.GetUserPreferences (ref pref, ref result))
return false;
if(string.IsNullOrEmpty(pref.EMail)) if(string.IsNullOrEmpty(pref.EMail))
pref.EMail = "No Email Address On Record"; pref.EMail = "No Email Address On Record";

View File

@ -43,7 +43,7 @@ namespace pCampBot
/// </summary> /// </summary>
public class PhysicsBehaviour2 : AbstractBehaviour 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() public PhysicsBehaviour2()
{ {

View File

@ -44,7 +44,7 @@ namespace pCampBot
/// </summary> /// </summary>
public class TwitchyBehaviour : AbstractBehaviour 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() public TwitchyBehaviour()
{ {

View File

@ -453,6 +453,7 @@
[MapImageService] [MapImageService]
LocalServiceModule = "OpenSim.Services.MapImageService.dll:MapImageService" LocalServiceModule = "OpenSim.Services.MapImageService.dll:MapImageService"
; Set this if you want to change the default ; Set this if you want to change the default
; TilesStoragePath = "maptiles" ; TilesStoragePath = "maptiles"
; ;

View File

@ -166,7 +166,6 @@
;; This switch creates the minimum set of body parts and avatar entries for a viewer 2 to show a default "Ruth" avatar rather than a cloud. ;; This switch creates the minimum set of body parts and avatar entries for a viewer 2 to show a default "Ruth" avatar rather than a cloud.
CreateDefaultAvatarEntries = true CreateDefaultAvatarEntries = true
;; The interface that local users get when they are in other grids ;; The interface that local users get when they are in other grids
;; This greatly restricts the inventory operations while in other grids ;; This greatly restricts the inventory operations while in other grids
[HGInventoryService] [HGInventoryService]