diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs
index f1290b9a2a..c4de81e93a 100644
--- a/OpenSim/Framework/IClientAPI.cs
+++ b/OpenSim/Framework/IClientAPI.cs
@@ -1293,7 +1293,7 @@ namespace OpenSim.Framework
void SendViewerEffect(ViewerEffectPacket.EffectBlock[] effectBlocks);
void SendViewerTime(int phase);
- void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, Byte[] charterMember, string flAbout,
+ void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, Byte[] membershipType, string flAbout,
uint flags, UUID flImageID, UUID imageID, string profileURL, UUID partnerID);
void SendScriptQuestion(UUID taskID, string taskName, string ownerName, UUID itemID, int question);
diff --git a/OpenSim/Framework/RegionInfo.cs b/OpenSim/Framework/RegionInfo.cs
index ca17793e64..8f754a5ef2 100644
--- a/OpenSim/Framework/RegionInfo.cs
+++ b/OpenSim/Framework/RegionInfo.cs
@@ -138,8 +138,6 @@ namespace OpenSim.Framework
protected uint m_httpPort;
protected string m_serverURI;
protected string m_regionName = String.Empty;
- protected bool Allow_Alternate_Ports;
- public bool m_allow_alternate_ports;
protected string m_externalHostName;
protected IPEndPoint m_internalEndPoint;
protected uint m_remotingPort;
@@ -147,6 +145,7 @@ namespace OpenSim.Framework
public string RemotingAddress;
public UUID ScopeID = UUID.Zero;
private UUID m_maptileStaticUUID = UUID.Zero;
+ private bool m_resolveAddress = false;
public uint WorldLocX = 0;
public uint WorldLocY = 0;
@@ -544,7 +543,7 @@ namespace OpenSim.Framework
private void ReadNiniConfig(IConfigSource source, string name)
{
-// bool creatingNew = false;
+ bool creatingNew = false;
if (source.Configs.Count == 0)
{
@@ -568,7 +567,7 @@ namespace OpenSim.Framework
source.AddConfig(name);
-// creatingNew = true;
+ creatingNew = true;
}
if (name == String.Empty)
@@ -672,18 +671,19 @@ namespace OpenSim.Framework
}
m_internalEndPoint = new IPEndPoint(address, port);
- // AllowAlternatePorts
+ // ResolveAddress
//
- allKeys.Remove("AllowAlternatePorts");
- if (config.Contains("AllowAlternatePorts"))
+ allKeys.Remove("ResolveAddress");
+ if (config.Contains("ResolveAddress"))
{
- m_allow_alternate_ports = config.GetBoolean("AllowAlternatePorts", true);
+ m_resolveAddress = config.GetBoolean("ResolveAddress", false);
}
else
{
- m_allow_alternate_ports = Convert.ToBoolean(MainConsole.Instance.CmdPrompt("Allow alternate ports", "False"));
+ if (creatingNew)
+ m_resolveAddress = Convert.ToBoolean(MainConsole.Instance.CmdPrompt("Resolve hostname to IP on start (for running inside Docker)", "False"));
- config.Set("AllowAlternatePorts", m_allow_alternate_ports.ToString());
+ config.Set("ResolveAddress", m_resolveAddress.ToString());
}
// ExternalHostName
@@ -706,10 +706,18 @@ namespace OpenSim.Framework
"[REGIONINFO]: Resolving SYSTEMIP to {0} for external hostname of region {1}",
m_externalHostName, name);
}
- else
+ else if (!m_resolveAddress)
{
m_externalHostName = externalName;
}
+ else
+ {
+ IPAddress[] addrs = Dns.GetHostAddresses(externalName);
+ if (addrs.Length != 1) // If it is ambiguous or not resolveable, use it literally
+ m_externalHostName = externalName;
+ else
+ m_externalHostName = addrs[0].ToString();
+ }
// RegionType
m_regionType = config.GetString("RegionType", String.Empty);
@@ -901,8 +909,6 @@ namespace OpenSim.Framework
config.Set("InternalAddress", m_internalEndPoint.Address.ToString());
config.Set("InternalPort", m_internalEndPoint.Port);
- config.Set("AllowAlternatePorts", m_allow_alternate_ports.ToString());
-
config.Set("ExternalHostName", m_externalHostName);
if (m_nonphysPrimMin > 0)
@@ -995,10 +1001,6 @@ namespace OpenSim.Framework
configMember.addConfigurationOption("internal_ip_port", ConfigurationOption.ConfigurationTypes.TYPE_INT32,
"Internal IP Port for incoming UDP client connections",
m_internalEndPoint.Port.ToString(), true);
- configMember.addConfigurationOption("allow_alternate_ports",
- ConfigurationOption.ConfigurationTypes.TYPE_BOOLEAN,
- "Allow sim to find alternate UDP ports when ports are in use?",
- m_allow_alternate_ports.ToString(), true);
configMember.addConfigurationOption("external_host_name",
ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY,
"External Host Name", m_externalHostName, true);
@@ -1068,9 +1070,6 @@ namespace OpenSim.Framework
configMember.addConfigurationOption("internal_ip_port", ConfigurationOption.ConfigurationTypes.TYPE_INT32,
"Internal IP Port for incoming UDP client connections",
ConfigSettings.DefaultRegionHttpPort.ToString(), false);
- configMember.addConfigurationOption("allow_alternate_ports", ConfigurationOption.ConfigurationTypes.TYPE_BOOLEAN,
- "Allow sim to find alternate UDP ports when ports are in use?",
- "false", true);
configMember.addConfigurationOption("external_host_name",
ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY,
"External Host Name", "127.0.0.1", false);
@@ -1141,9 +1140,6 @@ namespace OpenSim.Framework
case "internal_ip_port":
m_internalEndPoint.Port = (int) configuration_result;
break;
- case "allow_alternate_ports":
- m_allow_alternate_ports = (bool) configuration_result;
- break;
case "external_host_name":
if ((string) configuration_result != "SYSTEMIP")
{
@@ -1220,7 +1216,6 @@ namespace OpenSim.Framework
if ((RemotingAddress != null) && !RemotingAddress.Equals(""))
args["remoting_address"] = OSD.FromString(RemotingAddress);
args["remoting_port"] = OSD.FromString(RemotingPort.ToString());
- args["allow_alt_ports"] = OSD.FromBoolean(m_allow_alternate_ports);
if ((proxyUrl != null) && !proxyUrl.Equals(""))
args["proxy_url"] = OSD.FromString(proxyUrl);
if (RegionType != String.Empty)
@@ -1275,8 +1270,6 @@ namespace OpenSim.Framework
RemotingAddress = args["remoting_address"].AsString();
if (args["remoting_port"] != null)
UInt32.TryParse(args["remoting_port"].AsString(), out m_remotingPort);
- if (args["allow_alt_ports"] != null)
- m_allow_alternate_ports = args["allow_alt_ports"].AsBoolean();
if (args["proxy_url"] != null)
proxyUrl = args["proxy_url"].AsString();
if (args["region_type"] != null)
@@ -1314,7 +1307,8 @@ namespace OpenSim.Framework
kvp["http_port"] = HttpPort.ToString();
kvp["internal_ip_address"] = InternalEndPoint.Address.ToString();
kvp["internal_port"] = InternalEndPoint.Port.ToString();
- kvp["alternate_ports"] = m_allow_alternate_ports.ToString();
+ // TODO: Remove in next major version
+ kvp["alternate_ports"] = "False";
kvp["server_uri"] = ServerURI;
return kvp;
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs
index 01a06cd15c..a6fd99f30f 100644
--- a/OpenSim/Framework/Util.cs
+++ b/OpenSim/Framework/Util.cs
@@ -1685,6 +1685,8 @@ namespace OpenSim.Framework
// hide the password in the connection string
passPosition = connectionString.IndexOf("password", StringComparison.OrdinalIgnoreCase);
+ if (passPosition == -1)
+ return connectionString;
passPosition = connectionString.IndexOf("=", passPosition);
if (passPosition < connectionString.Length)
passPosition += 1;
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs
index cf2bf33231..3cb999bee5 100644
--- a/OpenSim/Region/Application/OpenSim.cs
+++ b/OpenSim/Region/Application/OpenSim.cs
@@ -26,6 +26,7 @@
*/
using System;
+using System.Threading;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
@@ -74,7 +75,7 @@ namespace OpenSim
private string m_timedScript = "disabled";
private int m_timeInterval = 1200;
- private Timer m_scriptTimer;
+ private System.Timers.Timer m_scriptTimer;
public OpenSim(IConfigSource configSource) : base(configSource)
{
@@ -125,6 +126,21 @@ namespace OpenSim
m_log.Info("[OPENSIM MAIN]: Using async_call_method " + Util.FireAndForgetMethod);
}
+ private static Mono.Unix.UnixSignal[] signals;
+
+
+ private Thread signal_thread = new Thread (delegate ()
+ {
+ while (true)
+ {
+ // Wait for a signal to be delivered
+ int index = Mono.Unix.UnixSignal.WaitAny (signals, -1);
+
+ //Mono.Unix.Native.Signum signal = signals [index].Signum;
+ MainConsole.Instance.RunCommand("shutdown");
+ }
+ });
+
///
/// Performs initialisation of the scene, such as loading configuration from disk.
///
@@ -134,6 +150,24 @@ namespace OpenSim
m_log.Info("========================= STARTING OPENSIM =========================");
m_log.Info("====================================================================");
+ if(!Util.IsWindows())
+ {
+ try
+ {
+ // linux mac os specifics
+ signals = new Mono.Unix.UnixSignal[]
+ {
+ new Mono.Unix.UnixSignal(Mono.Unix.Native.Signum.SIGTERM)
+ };
+ signal_thread.Start();
+ }
+ catch (Exception e)
+ {
+ m_log.Info("Could not set up UNIX signal handlers. SIGTERM will not");
+ m_log.InfoFormat("shut down gracefully: {0}", e.Message);
+ m_log.Debug("Exception was: ", e);
+ }
+ }
//m_log.InfoFormat("[OPENSIM MAIN]: GC Is Server GC: {0}", GCSettings.IsServerGC.ToString());
// http://msdn.microsoft.com/en-us/library/bb384202.aspx
//GCSettings.LatencyMode = GCLatencyMode.Batch;
@@ -217,7 +251,7 @@ namespace OpenSim
// Start timer script (run a script every xx seconds)
if (m_timedScript != "disabled")
{
- m_scriptTimer = new Timer();
+ m_scriptTimer = new System.Timers.Timer();
m_scriptTimer.Enabled = true;
m_scriptTimer.Interval = m_timeInterval*1000;
m_scriptTimer.Elapsed += RunAutoTimerScript;
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index ce7ee98d9b..a69b670cd7 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -2704,7 +2704,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
OutPacket(packet, ThrottleOutPacketType.Task);
}
- public void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, Byte[] charterMember,
+ public void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, Byte[] membershipType,
string flAbout, uint flags, UUID flImageID, UUID imageID, string profileURL,
UUID partnerID)
{
@@ -2716,7 +2716,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
else
avatarReply.PropertiesData.AboutText = Utils.EmptyBytes;
avatarReply.PropertiesData.BornOn = Util.StringToBytes256(bornOn);
- avatarReply.PropertiesData.CharterMember = charterMember;
+ avatarReply.PropertiesData.CharterMember = membershipType;
if (flAbout != null)
avatarReply.PropertiesData.FLAboutText = Util.StringToBytes256(flAbout);
else
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
index a868e3aa44..cedb9b4fec 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
@@ -81,7 +81,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
uint port = (uint)scene.RegionInfo.InternalEndPoint.Port;
IPAddress listenIP = scene.RegionInfo.InternalEndPoint.Address;
- Initialise(listenIP, ref port, scene.RegionInfo.ProxyOffset, scene.RegionInfo.m_allow_alternate_ports, m_Config, scene.AuthenticateHandler);
+ Initialise(listenIP, ref port, scene.RegionInfo.ProxyOffset, m_Config, scene.AuthenticateHandler);
scene.RegionInfo.InternalEndPoint.Port = (int)port;
AddScene(scene);
@@ -98,9 +98,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
#endregion
- public virtual void Initialise(IPAddress listenIP, ref uint port, int proxyPortOffsetParm, bool allow_alternate_port, IConfigSource configSource, AgentCircuitManager circuitManager)
+ public virtual void Initialise(IPAddress listenIP, ref uint port, int proxyPortOffsetParm, IConfigSource configSource, AgentCircuitManager circuitManager)
{
- m_udpServer = new LLUDPServer(listenIP, ref port, proxyPortOffsetParm, allow_alternate_port, configSource, circuitManager);
+ m_udpServer = new LLUDPServer(listenIP, ref port, proxyPortOffsetParm, configSource, circuitManager);
}
public virtual void AddScene(IScene scene)
@@ -430,12 +430,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public JobEngine OqrEngine { get; protected set; }
public LLUDPServer(
- IPAddress listenIP, ref uint port, int proxyPortOffsetParm, bool allow_alternate_port,
+ IPAddress listenIP, ref uint port, int proxyPortOffsetParm,
IConfigSource configSource, AgentCircuitManager circuitManager)
: base(listenIP, (int)port)
{
#region Environment.TickCount Measurement
+ // Update the port with the one we actually got
+ port = (uint)Port;
+
// Measure the resolution of Environment.TickCount
TickCountResolution = 0f;
for (int i = 0; i < 10; i++)
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/OpenSimUDPBase.cs b/OpenSim/Region/ClientStack/Linden/UDP/OpenSimUDPBase.cs
index 4d726b43dd..831381e8ce 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/OpenSimUDPBase.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/OpenSimUDPBase.cs
@@ -107,6 +107,11 @@ namespace OpenMetaverse
///
public float AverageReceiveTicksForLastSamplePeriod { get; private set; }
+ public int Port
+ {
+ get { return m_udpPort; }
+ }
+
#region PacketDropDebugging
///
/// For debugging purposes only... random number generator for dropping
@@ -217,10 +222,6 @@ namespace OpenMetaverse
SocketType.Dgram,
ProtocolType.Udp);
- // OpenSim may need this but in AVN, this messes up automated
- // sim restarts badly
- //m_udpSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, false);
-
try
{
if (m_udpSocket.Ttl < 128)
@@ -248,13 +249,22 @@ namespace OpenMetaverse
// we never want two regions to listen on the same port as they cannot demultiplex each other's messages,
// leading to a confusing bug.
// By default, Windows does not allow two sockets to bind to the same port.
- m_udpSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, false);
+ //
+ // Unfortunately, this also causes a crashed sim to leave the socket in a state
+ // where it appears to be in use but is really just hung from the old process
+ // crashing rather than closing it. While this protects agains misconfiguration,
+ // allowing crashed sims to be started up again right away, rather than having to
+ // wait 2 minutes for the socket to clear is more valuable. Commented 12/13/2016
+ // m_udpSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, false);
if (recvBufferSize != 0)
m_udpSocket.ReceiveBufferSize = recvBufferSize;
m_udpSocket.Bind(ipep);
+ if (m_udpPort == 0)
+ m_udpPort = ((IPEndPoint)m_udpSocket.LocalEndPoint).Port;
+
IsRunningInbound = true;
// kick off an async receive. The Start() method will return, the
diff --git a/OpenSim/Region/CoreModules/Avatar/Profile/BasicProfileModule.cs b/OpenSim/Region/CoreModules/Avatar/Profile/BasicProfileModule.cs
index 2bb24ae880..0b1dbc71ca 100644
--- a/OpenSim/Region/CoreModules/Avatar/Profile/BasicProfileModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Profile/BasicProfileModule.cs
@@ -154,7 +154,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Profile
name = account.FirstName + " " + account.LastName;
created = account.Created;
}
- Byte[] charterMember = Utils.StringToBytes(name);
+ Byte[] membershipType = Utils.StringToBytes(name);
profileUrl = "No profile data";
aboutText = string.Empty;
@@ -166,7 +166,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Profile
remoteClient.SendAvatarProperties(avatarID, aboutText,
Util.ToDateTime(created).ToString(
"M/d/yyyy", CultureInfo.InvariantCulture),
- charterMember, firstLifeAboutText,
+ membershipType, firstLifeAboutText,
(uint)(0 & 0xff),
firstLifeImage, image, profileUrl, partner);
diff --git a/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs b/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs
index 5be8556eb8..5314927c17 100644
--- a/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs
@@ -1009,9 +1009,9 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles
if (p != null && p.isNPC)
{
- remoteClient.SendAvatarProperties(avatarID, ((INPC)(p.ControllingClient)).profileAbout, "5/25/1977",
+ remoteClient.SendAvatarProperties(avatarID, ((INPC)(p.ControllingClient)).profileAbout, ((INPC)(p.ControllingClient)).Born,
Utils.StringToBytes("Non Player Character (NPC)"), "NPCs have no life", 16,
- UUID.Zero, UUID.Zero, "", UUID.Zero);
+ UUID.Zero, ((INPC)(p.ControllingClient)).profileImage, "", UUID.Zero);
remoteClient.SendAvatarInterestsReply(avatarID, 0, "",
0, "Getting into trouble", "Droidspeak");
return;
@@ -1032,7 +1032,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles
userInfo = new Dictionary();
}
- Byte[] charterMember = new Byte[1];
+ Byte[] membershipType = new Byte[1];
string born = String.Empty;
uint flags = 0x00;
@@ -1040,11 +1040,11 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles
{
if (account.UserTitle == "")
{
- charterMember[0] = (Byte)((account.UserFlags & 0xf00) >> 8);
+ membershipType[0] = (Byte)((account.UserFlags & 0xf00) >> 8);
}
else
{
- charterMember = Utils.StringToBytes(account.UserTitle);
+ membershipType = Utils.StringToBytes(account.UserTitle);
}
born = Util.ToDateTime(account.Created).ToString(
@@ -1057,11 +1057,11 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles
{
if ((string)userInfo["user_title"] == "")
{
- charterMember[0] = (Byte)(((Byte)userInfo["user_flags"] & 0xf00) >> 8);
+ membershipType[0] = (Byte)(((Byte)userInfo["user_flags"] & 0xf00) >> 8);
}
else
{
- charterMember = Utils.StringToBytes((string)userInfo["user_title"]);
+ membershipType = Utils.StringToBytes((string)userInfo["user_title"]);
}
int val_born = (int)userInfo["user_created"];
@@ -1085,7 +1085,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles
return;
}
- remoteClient.SendAvatarProperties(props.UserId, props.AboutText, born, charterMember , props.FirstLifeText, flags,
+ remoteClient.SendAvatarProperties(props.UserId, props.AboutText, born, membershipType , props.FirstLifeText, flags,
props.FirstLifeImageId, props.ImageId, props.WebUrl, props.PartnerId);
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
index ad094b4b91..58d6cf2675 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
@@ -456,7 +456,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
}
// Check Default Location (Also See ScenePresence.CompleteMovement)
- if (position.X == 128f && position.Y == 128f)
+ if (position.X == 128f && position.Y == 128f && position.Z == 22.5f)
position = sp.Scene.RegionInfo.DefaultLandingPoint;
// TODO: Get proper AVG Height
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
index 98f1f3bd44..bec5322341 100644
--- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
+++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
@@ -72,8 +72,6 @@ namespace OpenSim.Region.CoreModules.World.Land
public const int LandUnit = 4;
- private static readonly string remoteParcelRequestPath = "0009/";
-
private LandChannel landChannel;
private Scene m_scene;
@@ -1682,12 +1680,13 @@ namespace OpenSim.Region.CoreModules.World.Land
private void EventManagerOnRegisterCaps(UUID agentID, Caps caps)
{
+ //string capsBase = "/CAPS/" + UUID.Random();
string capsBase = "/CAPS/" + caps.CapsObjectPath;
caps.RegisterHandler(
"RemoteParcelRequest",
new RestStreamHandler(
"POST",
- capsBase + remoteParcelRequestPath,
+ capsBase,
(request, path, param, httpRequest, httpResponse)
=> RemoteParcelRequest(request, path, param, agentID, caps),
"RemoteParcelRequest",
@@ -1807,24 +1806,7 @@ namespace OpenSim.Region.CoreModules.World.Land
ArrayList list = (ArrayList)hash["location"];
uint x = (uint)(double)list[0];
uint y = (uint)(double)list[1];
- if(hash.ContainsKey("region_id"))
- {
- UUID regionID = (UUID)hash["region_id"];
- if (regionID == m_scene.RegionInfo.RegionID)
- {
- // a parcel request for a local parcel => no need to query the grid
- parcelID = Util.BuildFakeParcelID(m_scene.RegionInfo.RegionHandle, x, y);
- }
- else
- {
- // a parcel request for a parcel in another region. Ask the grid about the region
- GridRegion info = m_scene.GridService.GetRegionByUUID(scope, regionID);
- if (info != null)
- parcelID = Util.BuildFakeParcelID(info.RegionHandle, x, y);
- }
- }
-
- else if (hash.ContainsKey("region_handle"))
+ if (hash.ContainsKey("region_handle"))
{
// if you do a "About Landmark" on a landmark a second time, the viewer sends the
// region_handle it got earlier via RegionHandleRequest
@@ -1847,6 +1829,24 @@ namespace OpenSim.Region.CoreModules.World.Land
}
}
}
+ else if(hash.ContainsKey("region_id"))
+ {
+ UUID regionID = (UUID)hash["region_id"];
+ if (regionID == m_scene.RegionInfo.RegionID)
+ {
+ // a parcel request for a local parcel => no need to query the grid
+ parcelID = Util.BuildFakeParcelID(m_scene.RegionInfo.RegionHandle, x, y);
+ }
+ else
+ {
+ // a parcel request for a parcel in another region. Ask the grid about the region
+ GridRegion info = m_scene.GridService.GetRegionByUUID(scope, regionID);
+ if (info != null)
+ parcelID = Util.BuildFakeParcelID(info.RegionHandle, x, y);
+ }
+ }
+
+
}
}
catch (LLSD.LLSDParseException e)
diff --git a/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs
index d1fe3c7c2f..fb63c6a95f 100644
--- a/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs
+++ b/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs
@@ -216,7 +216,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
// while we don't fix the hard-coded urls
if (flags == 2)
{
- if (regionInfos.Count == 0)
+ if (regionInfos == null || regionInfos.Count == 0)
remoteClient.SendAgentAlertMessage("No regions found with that name.", true);
// else if (regionInfos.Count == 1)
// remoteClient.SendAgentAlertMessage("Region found!", false);
diff --git a/OpenSim/Region/Framework/Interfaces/INPCModule.cs b/OpenSim/Region/Framework/Interfaces/INPCModule.cs
index 13103584e1..813be4f93e 100644
--- a/OpenSim/Region/Framework/Interfaces/INPCModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/INPCModule.cs
@@ -59,6 +59,8 @@ namespace OpenSim.Region.Framework.Interfaces
UUID ActiveGroupId { get; set; }
UUID Owner { get; }
string profileAbout { get; set; }
+ UUID profileImage { get; set; }
+ string Born { get; set; }
}
public interface INPCModule
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 2cf0e9d3ac..463f6c8d0d 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -2044,7 +2044,7 @@ namespace OpenSim.Region.Framework.Scenes
}
// Check Default Location (Also See EntityTransferModule.TeleportAgentWithinRegion)
- if (AbsolutePosition.X == 128f && AbsolutePosition.Y == 128f)
+ if (AbsolutePosition.X == 128f && AbsolutePosition.Y == 128f && AbsolutePosition.Z == 22.5f)
AbsolutePosition = Scene.RegionInfo.DefaultLandingPoint;
if (!MakeRootAgent(AbsolutePosition, flying, ref look))
@@ -2125,11 +2125,12 @@ namespace OpenSim.Region.Framework.Scenes
if (!gotCrossUpdate && !isNPC)
Scene.SendLayerData(ControllingClient);
- // HG delay
- if((m_teleportFlags & TeleportFlags.ViaHGLogin) != 0)
+ // HG
+ bool isHGTP = (m_teleportFlags & TeleportFlags.ViaHGLogin) != 0;
+ if(isHGTP)
{
- Thread.Sleep(500);
- m_log.DebugFormat("[CompleteMovement] HG delay: {0}ms", Util.EnvironmentTickCountSubtract(ts));
+// ControllingClient.SendNameReply(m_uuid, Firstname, Lastname);
+ m_log.DebugFormat("[CompleteMovement] HG");
}
m_previusParcelHide = false;
@@ -2151,7 +2152,7 @@ namespace OpenSim.Region.Framework.Scenes
cachedbaked = true;
else
{
- if (m_scene.AvatarFactory != null)
+ if (m_scene.AvatarFactory != null && !isHGTP)
cachedbaked = m_scene.AvatarFactory.ValidateBakedTextureCache(this);
// not sure we need this
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
index 15d31bddbb..8b8ebe0915 100644
--- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
+++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
@@ -1247,7 +1247,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
}
- public void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, byte[] charterMember, string flAbout, uint flags, UUID flImageID, UUID imageID, string profileURL, UUID partnerID)
+ public void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, byte[] membershipType, string flAbout, uint flags, UUID flImageID, UUID imageID, string profileURL, UUID partnerID)
{
}
diff --git a/OpenSim/Region/OptionalModules/DataSnapshot/LandSnapshot.cs b/OpenSim/Region/OptionalModules/DataSnapshot/LandSnapshot.cs
index 5c791e6e76..eb2867d548 100644
--- a/OpenSim/Region/OptionalModules/DataSnapshot/LandSnapshot.cs
+++ b/OpenSim/Region/OptionalModules/DataSnapshot/LandSnapshot.cs
@@ -268,8 +268,12 @@ namespace OpenSim.Region.DataSnapshot.Providers
{
XmlNode username = nodeFactory.CreateNode(XmlNodeType.Element, "name", "");
UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, userOwnerUUID);
- username.InnerText = account.FirstName + " " + account.LastName;
+ if(account != null)
+ username.InnerText = account.FirstName + " " + account.LastName;
+ else
+ username.InnerText = "UnKnown";
userblock.AppendChild(username);
+
}
catch (Exception)
{
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
index 1096eae7b7..0cabe47c0a 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
@@ -70,6 +70,8 @@ namespace OpenSim.Region.OptionalModules.World.NPC
private readonly UUID m_ownerID;
private UUID m_hostGroupID;
private string m_profileAbout = "";
+ private UUID m_profileImage = UUID.Zero;
+ private string m_born;
public List SelectedObjects {get; private set;}
public NPCAvatar(
@@ -109,6 +111,13 @@ namespace OpenSim.Region.OptionalModules.World.NPC
m_profileAbout = value;
}
}
+
+ public UUID profileImage
+ {
+ get { return m_profileImage; }
+ set { m_profileImage = value; }
+ }
+
public IScene Scene
{
get { return m_scene; }
@@ -611,6 +620,12 @@ namespace OpenSim.Region.OptionalModules.World.NPC
set { }
}
+ public string Born
+ {
+ get { return m_born; }
+ set { m_born = value; }
+ }
+
public bool IsGroupMember(UUID groupID)
{
return (m_hostGroupID == groupID);
@@ -974,7 +989,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC
{
}
- public void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, Byte[] charterMember,
+ public void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, Byte[] membershipType,
string flAbout, uint flags, UUID flImageID, UUID imageID, string profileURL,
UUID partnerID)
{
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
index 8462661232..ced82e6b57 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
@@ -168,6 +168,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC
AvatarAppearance appearance)
{
NPCAvatar npcAvatar = null;
+ string born = DateTime.UtcNow.ToString();
try
{
@@ -222,6 +223,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC
ScenePresence sp;
if (scene.TryGetScenePresence(npcAvatar.AgentId, out sp))
{
+ npcAvatar.Born = born;
npcAvatar.ActiveGroupId = groupID;
sp.CompleteMovement(npcAvatar, false);
sp.Grouptitle = groupTitle;
diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs b/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs
index a9774730e6..bb661e54ad 100644
--- a/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs
+++ b/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs
@@ -239,7 +239,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
{
if (m_scene.haveActor(repData.actor))
{
- if (needsMeshing(repData.pbs)) // no need for pbs now?
+ if (needsMeshing(repData)) // no need for pbs now?
{
repData.comand = meshWorkerCmnds.changefull;
createqueue.Enqueue(repData);
@@ -284,8 +284,9 @@ namespace OpenSim.Region.PhysicsModule.ubOde
///
///
///
- public bool needsMeshing(PrimitiveBaseShape pbs)
+ public bool needsMeshing(ODEPhysRepData repData)
{
+ PrimitiveBaseShape pbs = repData.pbs;
// check sculpts or meshs
if (pbs.SculptEntry)
{
@@ -301,6 +302,11 @@ namespace OpenSim.Region.PhysicsModule.ubOde
if (forceSimplePrimMeshing)
return true;
+ // convex shapes have no holes
+ ushort profilehollow = pbs.ProfileHollow;
+ if(repData.shapetype == 2)
+ profilehollow = 0;
+
// if it's a standard box or sphere with no cuts, hollows, twist or top shear, return false since ODE can use an internal representation for the prim
if ((pbs.ProfileShape == ProfileShape.Square && pbs.PathCurve == (byte)Extrusion.Straight)
@@ -309,7 +315,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
{
if (pbs.ProfileBegin == 0 && pbs.ProfileEnd == 0
- && pbs.ProfileHollow == 0
+ && profilehollow == 0
&& pbs.PathTwist == 0 && pbs.PathTwistBegin == 0
&& pbs.PathBegin == 0 && pbs.PathEnd == 0
&& pbs.PathTaperX == 0 && pbs.PathTaperY == 0
@@ -326,7 +332,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
int iPropertiesNotSupportedDefault = 0;
- if (pbs.ProfileHollow != 0)
+ if (profilehollow != 0)
iPropertiesNotSupportedDefault++;
if ((pbs.PathBegin != 0) || pbs.PathEnd != 0)
@@ -407,7 +413,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
PhysicsActor actor = repData.actor;
PrimitiveBaseShape pbs = repData.pbs;
- if (!needsMeshing(pbs))
+ if (!needsMeshing(repData))
{
repData.meshState = MeshState.noNeed;
repData.hasOBB = false;
@@ -417,17 +423,17 @@ namespace OpenSim.Region.PhysicsModule.ubOde
IMesh mesh = null;
Vector3 size = repData.size;
- byte shapetype = repData.shapetype;
-
- bool convex;
int clod = (int)LevelOfDetail.High;
+ bool convex;
+ byte shapetype = repData.shapetype;
if (shapetype == 0)
convex = false;
else
{
convex = true;
- if (pbs.SculptType != (byte)SculptType.Mesh)
+ // sculpts pseudo convex
+ if (pbs.SculptEntry && pbs.SculptType != (byte)SculptType.Mesh)
clod = (int)LevelOfDetail.Low;
}
@@ -483,7 +489,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
repData.mesh = null;
repData.hasOBB = false;
- if (!needsMeshing(pbs))
+ if (!needsMeshing(repData))
{
repData.meshState = MeshState.noNeed;
return;
diff --git a/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs b/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs
index 2ae0881e78..7f0713a7c3 100644
--- a/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs
+++ b/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs
@@ -349,7 +349,7 @@ namespace OpenSim.Region.PhysicsModule.ubODEMeshing
}
else
{
- if (!GenerateCoordsAndFacesFromPrimShapeData(primName, primShape, lod, out coords, out faces))
+ if (!GenerateCoordsAndFacesFromPrimShapeData(primName, primShape, lod, convex, out coords, out faces))
return null;
}
@@ -942,7 +942,8 @@ namespace OpenSim.Region.PhysicsModule.ubODEMeshing
/// Faces are added to this list by the method.
/// true if coords and faces were successfully generated, false if not
private bool GenerateCoordsAndFacesFromPrimShapeData(
- string primName, PrimitiveBaseShape primShape, float lod, out List coords, out List faces)
+ string primName, PrimitiveBaseShape primShape, float lod, bool convex,
+ out List coords, out List faces)
{
PrimMesh primMesh;
coords = new List();
@@ -970,7 +971,9 @@ namespace OpenSim.Region.PhysicsModule.ubODEMeshing
profileBegin = profileEnd - 0.02f;
float profileHollow = (float)primShape.ProfileHollow * 2.0e-5f;
- if (profileHollow > 0.95f)
+ if(convex)
+ profileHollow = 0.0f;
+ else if (profileHollow > 0.95f)
profileHollow = 0.95f;
int sides = 4;
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 71e8ca9593..7efdc62d43 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -6307,6 +6307,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
{
return World.RegionInfo.ObjectCapacity.ToString();
}
+ else if (name == "region_object_bonus")
+ {
+ return World.RegionInfo.RegionSettings.ObjectBonus.ToString();
+ }
else
{
return "";
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index b101cf9b44..9742119d66 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -3001,7 +3001,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
public void osNpcSetProfileAbout(LSL_Key npc, string about)
{
- CheckThreatLevel(ThreatLevel.High, "osNpcCreate");
+ CheckThreatLevel(ThreatLevel.Low, "osNpcSetProfileAbout");
m_host.AddScriptLPS(1);
INPCModule module = World.RequestModuleInterface();
@@ -3018,6 +3018,35 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
}
}
+ public void osNpcSetProfileImage(LSL_Key npc, string image)
+ {
+ CheckThreatLevel(ThreatLevel.Low, "osNpcSetProfileImage");
+ m_host.AddScriptLPS(1);
+
+ INPCModule module = World.RequestModuleInterface();
+ if (module != null)
+ {
+ UUID npcId = new UUID(npc.m_string);
+
+ if (!module.CheckPermissions(npcId, m_host.OwnerID))
+ return;
+
+ UUID ImageID = new UUID();
+
+ ImageID = ScriptUtils.GetAssetIdFromItemName(m_host, image, (int)AssetType.Texture);
+
+ if (ImageID == null || ImageID == UUID.Zero)
+ {
+ if (!UUID.TryParse(image, out ImageID))
+ return;
+ }
+
+ ScenePresence sp = World.GetScenePresence(npcId);
+ if (sp != null)
+ ((INPC)(sp.ControllingClient)).profileImage = ImageID;
+ }
+ }
+
public void osNpcSay(LSL_Key npc, string message)
{
osNpcSay(npc, 0, message);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
index 87b09675b2..cf3e6df31d 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
@@ -344,6 +344,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
void osNpcSetRot(LSL_Key npc, rotation rot);
void osNpcStopMoveToTarget(LSL_Key npc);
void osNpcSetProfileAbout(LSL_Key npc, string about);
+ void osNpcSetProfileImage(LSL_Key npc, string image);
void osNpcSay(key npc, string message);
void osNpcSay(key npc, int channel, string message);
void osNpcShout(key npc, int channel, string message);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
index 5bc998e8c1..2e8a76c34e 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
@@ -642,6 +642,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
m_OSSL_Functions.osNpcSetProfileAbout(npc, about);
}
+ public void osNpcSetProfileImage(LSL_Key npc, string image)
+ {
+ m_OSSL_Functions.osNpcSetProfileImage(npc, image);
+ }
+
public void osNpcSay(key npc, string message)
{
m_OSSL_Functions.osNpcSay(npc, message);
diff --git a/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs b/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
index 2d0b2b68f5..6bd24dbc1b 100644
--- a/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
+++ b/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
@@ -125,6 +125,7 @@ namespace OpenSim.Server.Handlers.Hypergrid
hash["hostname"] = regInfo.ExternalHostName;
hash["http_port"] = regInfo.HttpPort.ToString();
hash["internal_port"] = regInfo.InternalEndPoint.Port.ToString();
+ hash["server_uri"] = regInfo.ServerURI;
}
if (message != null)
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs b/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs
index 8fc766d9e0..17f4fc694b 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs
@@ -308,11 +308,11 @@ namespace OpenSim.Services.Connectors.SimianGrid
about = new OSDMap(0);
// Check if this user is a grid operator
- byte[] charterMember;
+ byte[] membershipType;
if (user["AccessLevel"].AsInteger() >= 200)
- charterMember = Utils.StringToBytes("Operator");
+ membershipType = Utils.StringToBytes("Operator");
else
- charterMember = Utils.EmptyBytes;
+ membershipType = Utils.EmptyBytes;
// Check if the user is online
if (client.Scene is Scene)
@@ -327,7 +327,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
flags |= ProfileFlags.Identified;
client.SendAvatarProperties(avatarID, about["About"].AsString(), user["CreationDate"].AsDate().ToString("M/d/yyyy",
- System.Globalization.CultureInfo.InvariantCulture), charterMember, about["FLAbout"].AsString(), (uint)flags,
+ System.Globalization.CultureInfo.InvariantCulture), membershipType, about["FLAbout"].AsString(), (uint)flags,
about["FLImage"].AsUUID(), about["Image"].AsUUID(), about["URL"].AsString(), user["Partner"].AsUUID());
OSDMap interests = null;
diff --git a/OpenSim/Services/GridService/HypergridLinker.cs b/OpenSim/Services/GridService/HypergridLinker.cs
index e00025bfef..ceb2c6e7bb 100644
--- a/OpenSim/Services/GridService/HypergridLinker.cs
+++ b/OpenSim/Services/GridService/HypergridLinker.cs
@@ -255,11 +255,8 @@ namespace OpenSim.Services.GridService
regionName = parts[2];
}
- if(port == 80)
- serverURI = "http://"+ host + "/";
- else
- serverURI = "http://"+ host +":"+ port.ToString() + "/";
- }
+ serverURI = "http://"+ host +":"+ port.ToString() + "/";
+ }
}
else
{
@@ -301,6 +298,10 @@ namespace OpenSim.Services.GridService
if(!string.IsNullOrEmpty(regionName))
regionName = regionName.Trim(new char[] { '"', ' ' });
serverURI = uri.AbsoluteUri;
+ if(uri.Port == 80)
+ serverURI = serverURI.Trim(new char[] { '/', ' ' }) +":80/";
+ else if(uri.Port == 443)
+ serverURI = serverURI.Trim(new char[] { '/', ' ' }) +":443/";
return true;
}
diff --git a/OpenSim/Tests/Common/Helpers/ClientStackHelpers.cs b/OpenSim/Tests/Common/Helpers/ClientStackHelpers.cs
index 33cd8a2cd4..df9f6f22c8 100644
--- a/OpenSim/Tests/Common/Helpers/ClientStackHelpers.cs
+++ b/OpenSim/Tests/Common/Helpers/ClientStackHelpers.cs
@@ -86,10 +86,10 @@ namespace OpenSim.Tests.Common
uint port = 0;
AgentCircuitManager acm = scene.AuthenticateHandler;
- TestLLUDPServer udpServer = new TestLLUDPServer(IPAddress.Any, ref port, 0, false, configSource, acm);
+ TestLLUDPServer udpServer = new TestLLUDPServer(IPAddress.Any, ref port, 0, configSource, acm);
udpServer.AddScene(scene);
return udpServer;
}
}
-}
\ No newline at end of file
+}
diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs
index 9251c4fcd3..f407e5a7c1 100644
--- a/OpenSim/Tests/Common/Mock/TestClient.cs
+++ b/OpenSim/Tests/Common/Mock/TestClient.cs
@@ -990,7 +990,7 @@ namespace OpenSim.Tests.Common
{
}
- public void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, Byte[] charterMember,
+ public void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, Byte[] membershipType,
string flAbout, uint flags, UUID flImageID, UUID imageID, string profileURL,
UUID partnerID)
{
diff --git a/OpenSim/Tests/Common/Mock/TestLLUDPServer.cs b/OpenSim/Tests/Common/Mock/TestLLUDPServer.cs
index 26887c9ebd..b2c6a8cc4c 100644
--- a/OpenSim/Tests/Common/Mock/TestLLUDPServer.cs
+++ b/OpenSim/Tests/Common/Mock/TestLLUDPServer.cs
@@ -43,8 +43,8 @@ namespace OpenSim.Tests.Common
{
public List PacketsSent { get; private set; }
- public TestLLUDPServer(IPAddress listenIP, ref uint port, int proxyPortOffsetParm, bool allow_alternate_port, IConfigSource configSource, AgentCircuitManager circuitManager)
- : base(listenIP, ref port, proxyPortOffsetParm, allow_alternate_port, configSource, circuitManager)
+ public TestLLUDPServer(IPAddress listenIP, ref uint port, int proxyPortOffsetParm, IConfigSource configSource, AgentCircuitManager circuitManager)
+ : base(listenIP, ref port, proxyPortOffsetParm, configSource, circuitManager)
{
PacketsSent = new List();
}
diff --git a/bin/Mono.Posix.dll b/bin/Mono.Posix.dll
new file mode 100755
index 0000000000..97ec8bf3f2
Binary files /dev/null and b/bin/Mono.Posix.dll differ
diff --git a/bin/config-include/osslEnable.ini b/bin/config-include/osslEnable.ini
index 4c6be1604c..59a162a98d 100644
--- a/bin/config-include/osslEnable.ini
+++ b/bin/config-include/osslEnable.ini
@@ -139,6 +139,8 @@
Allow_osMessageObject = ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Allow_osRegexIsMatch = true
Allow_osGetAvatarHomeURI = ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
+ Allow_osNpcSetProfileAbout = ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
+ Allow_osNpcSetProfileImage = ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
; ThreatLevel Moderate
Allow_osDropAttachment = ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
diff --git a/prebuild.xml b/prebuild.xml
index 2bb053ec51..cb39e18e16 100644
--- a/prebuild.xml
+++ b/prebuild.xml
@@ -1790,6 +1790,7 @@
+