Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
commit
edc155c636
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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++;
|
||||||
|
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
@ -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(
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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";
|
||||||
|
|
|
@ -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()
|
||||||
{
|
{
|
||||||
|
|
|
@ -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()
|
||||||
{
|
{
|
||||||
|
|
|
@ -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"
|
||||||
;
|
;
|
||||||
|
|
|
@ -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]
|
||||||
|
|
Loading…
Reference in New Issue