mirror of
https://github.com/opensim/opensim.git
synced 2026-08-13 05:05:43 +08:00
Merge branch 'master' into careminster
Conflicts: OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs OpenSim/Region/Framework/Scenes/ScenePresence.cs OpenSim/Region/Framework/Scenes/SimStatsReporter.cs
This commit is contained in:
@@ -186,7 +186,6 @@ namespace OpenSim.Groups
|
||||
public UUID CreateGroup(UUID RequestingAgentID, string name, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment,
|
||||
bool allowPublish, bool maturePublish, UUID founderID, out string reason)
|
||||
{
|
||||
m_log.DebugFormat("[Groups]: Creating group {0}", name);
|
||||
reason = string.Empty;
|
||||
if (m_UserManagement.IsLocalGridUser(RequestingAgentID))
|
||||
return m_LocalGroupsConnector.CreateGroup(RequestingAgentID, name, charter, showInList, insigniaID,
|
||||
|
||||
@@ -170,11 +170,16 @@ namespace OpenSim.Groups
|
||||
|
||||
}
|
||||
|
||||
grec = m_GroupsService.GetGroupRecord(RequestingAgentID, grec.GroupID);
|
||||
if (grec == null)
|
||||
NullResult(result, "Internal Error");
|
||||
if (grec.GroupID != UUID.Zero)
|
||||
{
|
||||
grec = m_GroupsService.GetGroupRecord(RequestingAgentID, grec.GroupID);
|
||||
if (grec == null)
|
||||
NullResult(result, "Internal Error");
|
||||
else
|
||||
result["RESULT"] = GroupsDataUtils.GroupRecord(grec);
|
||||
}
|
||||
else
|
||||
result["RESULT"] = GroupsDataUtils.GroupRecord(grec);
|
||||
NullResult(result, reason);
|
||||
}
|
||||
|
||||
string xmlString = ServerUtils.BuildXmlResponse(result);
|
||||
|
||||
@@ -130,6 +130,13 @@ namespace OpenSim.Groups
|
||||
{
|
||||
reason = string.Empty;
|
||||
|
||||
// Check if the group already exists
|
||||
if (m_Database.RetrieveGroup(name) != null)
|
||||
{
|
||||
reason = "A group with that name already exists";
|
||||
return UUID.Zero;
|
||||
}
|
||||
|
||||
// Create the group
|
||||
GroupData data = new GroupData();
|
||||
data.GroupID = UUID.Random();
|
||||
|
||||
@@ -429,7 +429,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
if (!assetServerURL.EndsWith("/") && !assetServerURL.EndsWith("="))
|
||||
assetServerURL = assetServerURL + "/";
|
||||
|
||||
m_log.DebugFormat("[J2KIMAGE]: texture {0} not found in local asset storage. Trying user's storage.", assetServerURL + id);
|
||||
// m_log.DebugFormat("[J2KIMAGE]: texture {0} not found in local asset storage. Trying user's storage.", assetServerURL + id);
|
||||
AssetService.Get(assetServerURL + id, InventoryAccessModule, AssetReceived);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1416,7 +1416,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
|
||||
// We only want to send initial data to new clients, not ones which are being converted from child to root.
|
||||
if (client != null)
|
||||
client.SceneAgent.SendInitialDataToMe();
|
||||
{
|
||||
AgentCircuitData aCircuit = m_scene.AuthenticateHandler.GetAgentCircuitData(uccp.CircuitCode.Code);
|
||||
bool tp = (aCircuit.teleportFlags > 0);
|
||||
if (!tp)
|
||||
client.SceneAgent.SendInitialDataToMe();
|
||||
}
|
||||
|
||||
// Now we know we can handle more data
|
||||
Thread.Sleep(200);
|
||||
|
||||
@@ -942,6 +942,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||
EnableChildAgents(sp);
|
||||
|
||||
// Finally, kill the agent we just created at the destination.
|
||||
// XXX: Possibly this should be done asynchronously.
|
||||
Scene.SimulationService.CloseAgent(finalDestination, sp.UUID);
|
||||
}
|
||||
|
||||
|
||||
@@ -322,7 +322,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation
|
||||
// "[LOCAL SIMULATION CONNECTOR]: Found region {0} {1} to send AgentUpdate",
|
||||
// s.RegionInfo.RegionName, destination.RegionHandle);
|
||||
|
||||
Util.FireAndForget(delegate { m_scenes[destination.RegionID].IncomingCloseAgent(id, false); });
|
||||
m_scenes[destination.RegionID].IncomingCloseAgent(id, false);
|
||||
return true;
|
||||
}
|
||||
//m_log.Debug("[LOCAL COMMS]: region not found in SendCloseAgent");
|
||||
|
||||
@@ -417,13 +417,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
// is not allowed to change the export flag.
|
||||
bool denyExportChange = false;
|
||||
|
||||
m_log.InfoFormat("[XXX]: B: {0} O: {1} E: {2}", itemUpd.BasePermissions, itemUpd.CurrentPermissions, itemUpd.EveryOnePermissions);
|
||||
// m_log.DebugFormat("[XXX]: B: {0} O: {1} E: {2}", itemUpd.BasePermissions, itemUpd.CurrentPermissions, itemUpd.EveryOnePermissions);
|
||||
|
||||
// If the user is not the creator or doesn't have "E" in both "B" and "O", deny setting export
|
||||
if ((item.BasePermissions & (uint)(PermissionMask.All | PermissionMask.Export)) != (uint)(PermissionMask.All | PermissionMask.Export) || (item.CurrentPermissions & (uint)PermissionMask.Export) == 0 || item.CreatorIdAsUuid != item.Owner)
|
||||
denyExportChange = true;
|
||||
|
||||
m_log.InfoFormat("[XXX]: Deny Export Update {0}", denyExportChange);
|
||||
// m_log.DebugFormat("[XXX]: Deny Export Update {0}", denyExportChange);
|
||||
|
||||
// If it is already set, force it set and also force full perm
|
||||
// else prevent setting it. It can and should never be set unless
|
||||
@@ -447,7 +447,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
// If the new state is exportable, force full perm
|
||||
if ((itemUpd.EveryOnePermissions & (uint)PermissionMask.Export) != 0)
|
||||
{
|
||||
m_log.InfoFormat("[XXX]: Force full perm");
|
||||
// m_log.DebugFormat("[XXX]: Force full perm");
|
||||
itemUpd.NextPermissions = (uint)(PermissionMask.All);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3593,15 +3593,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
if (closeChildAgents && CapsModule != null)
|
||||
CapsModule.RemoveCaps(agentID, avatar.ControllingClient.CircuitCode);
|
||||
|
||||
// // REFACTORING PROBLEM -- well not really a problem, but just to point out that whatever
|
||||
// // this method is doing is HORRIBLE!!!
|
||||
// Commented pending deletion since this method no longer appears to do anything at all
|
||||
// avatar.Scene.NeedSceneCacheClear(avatar.UUID);
|
||||
|
||||
if (closeChildAgents && !isChildAgent)
|
||||
{
|
||||
List<ulong> regions = avatar.KnownRegionHandles;
|
||||
regions.Remove(RegionInfo.RegionHandle);
|
||||
|
||||
// This ends up being done asynchronously so that a logout isn't held up where there are many present but unresponsive neighbours.
|
||||
m_sceneGridService.SendCloseChildAgentConnections(agentID, regions);
|
||||
}
|
||||
|
||||
|
||||
@@ -1550,6 +1550,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
// Create child agents in neighbouring regions
|
||||
if (openChildAgents && !IsChildAgent)
|
||||
{
|
||||
SendInitialDataToMe();
|
||||
|
||||
IEntityTransferModule m_agentTransfer = m_scene.RequestModuleInterface<IEntityTransferModule>();
|
||||
if (m_agentTransfer != null)
|
||||
@@ -3347,10 +3348,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
if (byebyeRegions.Count > 0)
|
||||
{
|
||||
m_log.Debug("[SCENE PRESENCE]: Closing " + byebyeRegions.Count + " child agents");
|
||||
Util.FireAndForget(delegate
|
||||
{
|
||||
m_scene.SceneGridService.SendCloseChildAgentConnections(ControllingClient.AgentId, byebyeRegions);
|
||||
});
|
||||
|
||||
m_scene.SceneGridService.SendCloseChildAgentConnections(ControllingClient.AgentId, byebyeRegions);
|
||||
}
|
||||
|
||||
foreach (ulong handle in byebyeRegions)
|
||||
|
||||
@@ -290,6 +290,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
|
||||
private void statsHeartBeat(object sender, EventArgs e)
|
||||
{
|
||||
if (!m_scene.Active)
|
||||
return;
|
||||
|
||||
SimStatsPacket.StatBlock[] sb = new SimStatsPacket.StatBlock[23];
|
||||
SimStatsPacket.RegionBlock rb = new SimStatsPacket.RegionBlock();
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
* Copyright (c) Contributors, http://opensimulator.org/
|
||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||
*
|
||||
@@ -419,7 +419,7 @@ public sealed class BSCharacter : BSPhysObject
|
||||
DetailLog("{0},BSCharacter.setTargetVelocity,call,vel={1}", LocalID, value);
|
||||
m_targetVelocity = value;
|
||||
OMV.Vector3 targetVel = value;
|
||||
if (_setAlwaysRun)
|
||||
if (_setAlwaysRun && !_flying)
|
||||
targetVel *= new OMV.Vector3(BSParam.AvatarAlwaysRunFactor, BSParam.AvatarAlwaysRunFactor, 0f);
|
||||
|
||||
if (m_moveActor != null)
|
||||
@@ -481,7 +481,10 @@ public sealed class BSCharacter : BSPhysObject
|
||||
_orientation = value;
|
||||
PhysScene.TaintedObject("BSCharacter.setOrientation", delegate()
|
||||
{
|
||||
ForceOrientation = _orientation;
|
||||
// Bullet assumes we know what we are doing when forcing orientation
|
||||
// so it lets us go against all the rules and just compensates for them later.
|
||||
// This keeps us from flipping the capsule over which the veiwer does not understand.
|
||||
ForceOrientation = new OMV.Quaternion(0, 0, _orientation.Z,0);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -649,12 +652,12 @@ public sealed class BSCharacter : BSPhysObject
|
||||
OMV.Vector3 newScale;
|
||||
|
||||
// Bullet's capsule total height is the "passed height + radius * 2";
|
||||
// The base capsule is 1 diameter and 2 height (passed radius=0.5, passed height = 1)
|
||||
// The base capsule is 1 unit in diameter and 2 units in height (passed radius=0.5, passed height = 1)
|
||||
// The number we pass in for 'scaling' is the multiplier to get that base
|
||||
// shape to be the size desired.
|
||||
// So, when creating the scale for the avatar height, we take the passed height
|
||||
// (size.Z) and remove the caps.
|
||||
// Another oddity of the Bullet capsule implementation is that it presumes the Y
|
||||
// An oddity of the Bullet capsule implementation is that it presumes the Y
|
||||
// dimension is the radius of the capsule. Even though some of the code allows
|
||||
// for a asymmetrical capsule, other parts of the code presume it is cylindrical.
|
||||
|
||||
@@ -662,8 +665,27 @@ public sealed class BSCharacter : BSPhysObject
|
||||
newScale.X = size.X / 2f;
|
||||
newScale.Y = size.Y / 2f;
|
||||
|
||||
float heightAdjust = BSParam.AvatarHeightMidFudge;
|
||||
if (BSParam.AvatarHeightLowFudge != 0f || BSParam.AvatarHeightHighFudge != 0f)
|
||||
{
|
||||
// An avatar is between 1.61 and 2.12 meters. Midpoint is 1.87m.
|
||||
// The "times 4" relies on the fact that the difference from the midpoint to the extremes is exactly 0.25
|
||||
float midHeightOffset = size.Z - 1.87f;
|
||||
if (midHeightOffset < 0f)
|
||||
{
|
||||
// Small avatar. Add the adjustment based on the distance from midheight
|
||||
heightAdjust += -1f * midHeightOffset * 4f * BSParam.AvatarHeightLowFudge;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Large avatar. Add the adjustment based on the distance from midheight
|
||||
heightAdjust += midHeightOffset * 4f * BSParam.AvatarHeightHighFudge;
|
||||
}
|
||||
}
|
||||
// The total scale height is the central cylindar plus the caps on the two ends.
|
||||
newScale.Z = (size.Z + (Math.Min(size.X, size.Y) * 2)) / 2f;
|
||||
newScale.Z = (size.Z + (Math.Min(size.X, size.Y) * 2) + heightAdjust) / 2f;
|
||||
// m_log.DebugFormat("{0} ComputeAvatarScale: size={1},adj={2},scale={3}", LogHeader, size, heightAdjust, newScale);
|
||||
|
||||
// If smaller than the endcaps, just fake like we're almost that small
|
||||
if (newScale.Z < 0)
|
||||
newScale.Z = 0.1f;
|
||||
|
||||
@@ -90,7 +90,7 @@ public static class BSParam
|
||||
public static bool ShouldUseBulletHACD { get; set; }
|
||||
public static bool ShouldUseSingleConvexHullForPrims { get; set; }
|
||||
|
||||
public static float TerrainImplementation { get; private set; }
|
||||
public static float TerrainImplementation { get; set; }
|
||||
public static int TerrainMeshMagnification { get; private set; }
|
||||
public static float TerrainFriction { get; private set; }
|
||||
public static float TerrainHitFraction { get; private set; }
|
||||
@@ -125,6 +125,9 @@ public static class BSParam
|
||||
public static float AvatarCapsuleWidth { get; private set; }
|
||||
public static float AvatarCapsuleDepth { get; private set; }
|
||||
public static float AvatarCapsuleHeight { get; private set; }
|
||||
public static float AvatarHeightLowFudge { get; private set; }
|
||||
public static float AvatarHeightMidFudge { get; private set; }
|
||||
public static float AvatarHeightHighFudge { get; private set; }
|
||||
public static float AvatarContactProcessingThreshold { get; private set; }
|
||||
public static float AvatarBelowGroundUpCorrectionMeters { get; private set; }
|
||||
public static float AvatarStepHeight { get; private set; }
|
||||
@@ -539,6 +542,12 @@ public static class BSParam
|
||||
0.45f ),
|
||||
new ParameterDefn<float>("AvatarCapsuleHeight", "Default height of space around avatar",
|
||||
1.5f ),
|
||||
new ParameterDefn<float>("AvatarHeightLowFudge", "A fudge factor to make small avatars stand on the ground",
|
||||
-0.2f ),
|
||||
new ParameterDefn<float>("AvatarHeightMidFudge", "A fudge distance to adjust average sized avatars to be standing on ground",
|
||||
0.1f ),
|
||||
new ParameterDefn<float>("AvatarHeightHighFudge", "A fudge factor to make tall avatars stand on the ground",
|
||||
0.1f ),
|
||||
new ParameterDefn<float>("AvatarContactProcessingThreshold", "Distance from capsule to check for collisions",
|
||||
0.1f ),
|
||||
new ParameterDefn<float>("AvatarBelowGroundUpCorrectionMeters", "Meters to move avatar up if it seems to be below ground",
|
||||
|
||||
@@ -318,8 +318,12 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters
|
||||
ret = new BSAPIXNA(engineName, this);
|
||||
// Disable some features that are not implemented in BulletXNA
|
||||
m_log.InfoFormat("{0} Disabling some physics features not implemented by BulletXNA", LogHeader);
|
||||
m_log.InfoFormat("{0} Disabling ShouldUseBulletHACD", LogHeader);
|
||||
BSParam.ShouldUseBulletHACD = false;
|
||||
m_log.InfoFormat("{0} Disabling ShouldUseSingleConvexHullForPrims", LogHeader);
|
||||
BSParam.ShouldUseSingleConvexHullForPrims = false;
|
||||
m_log.InfoFormat("{0} Setting terrain implimentation to Heightmap", LogHeader);
|
||||
BSParam.TerrainImplementation = (float)BSTerrainPhys.TerrainImplementation.Heightmap;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -283,8 +283,13 @@ public class BSShapeNative : BSShape
|
||||
public override BSShape GetReference(BSScene pPhysicsScene, BSPhysObject pPrim)
|
||||
{
|
||||
// Native shapes are not shared so we return a new shape.
|
||||
return new BSShapeNative(CreatePhysicalNativeShape(pPhysicsScene, pPrim,
|
||||
physShapeInfo.shapeType, (FixedShapeKey)physShapeInfo.shapeKey) );
|
||||
BSShape ret = null;
|
||||
lock (physShapeInfo)
|
||||
{
|
||||
ret = new BSShapeNative(CreatePhysicalNativeShape(pPhysicsScene, pPrim,
|
||||
physShapeInfo.shapeType, (FixedShapeKey)physShapeInfo.shapeKey));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Make this reference to the physical shape go away since native shapes are not shared.
|
||||
|
||||
@@ -358,6 +358,10 @@ namespace OpenSim.Region.Physics.Meshing
|
||||
physicsParms = (OSDMap)map["physics_shape"]; // old asset format
|
||||
else if (map.ContainsKey("physics_mesh"))
|
||||
physicsParms = (OSDMap)map["physics_mesh"]; // new asset format
|
||||
else if (map.ContainsKey("medium_lod"))
|
||||
physicsParms = (OSDMap)map["medium_lod"]; // if no physics mesh, try to fall back to medium LOD display mesh
|
||||
else if (map.ContainsKey("high_lod"))
|
||||
physicsParms = (OSDMap)map["high_lod"]; // if all else fails, use highest LOD display mesh and hope it works :)
|
||||
|
||||
if (physicsParms == null)
|
||||
{
|
||||
|
||||
@@ -546,21 +546,33 @@ namespace OpenSim.Region.ScriptEngine.Shared
|
||||
|
||||
set {m_data = value; }
|
||||
}
|
||||
// Function to obtain LSL type from an index. This is needed
|
||||
// because LSL lists allow for multiple types, and safely
|
||||
// iterating in them requires a type check.
|
||||
|
||||
/// <summary>
|
||||
/// Obtain LSL type from an index.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// This is needed because LSL lists allow for multiple types, and safely
|
||||
/// iterating in them requires a type check.
|
||||
/// </remarks>
|
||||
/// <returns></returns>
|
||||
/// <param name='itemIndex'></param>
|
||||
public Type GetLSLListItemType(int itemIndex)
|
||||
{
|
||||
return m_data[itemIndex].GetType();
|
||||
}
|
||||
|
||||
// Member functions to obtain item as specific types.
|
||||
// For cases where implicit conversions would apply if items
|
||||
// were not in a list (e.g. integer to float, but not float
|
||||
// to integer) functions check for alternate types so as to
|
||||
// down-cast from Object to the correct type.
|
||||
// Note: no checks for item index being valid are performed
|
||||
|
||||
/// <summary>
|
||||
/// Obtain float from an index.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// For cases where implicit conversions would apply if items
|
||||
/// were not in a list (e.g. integer to float, but not float
|
||||
/// to integer) functions check for alternate types so as to
|
||||
/// down-cast from Object to the correct type.
|
||||
/// Note: no checks for item index being valid are performed
|
||||
/// </remarks>
|
||||
/// <returns></returns>
|
||||
/// <param name='itemIndex'></param>
|
||||
public LSL_Types.LSLFloat GetLSLFloatItem(int itemIndex)
|
||||
{
|
||||
if (m_data[itemIndex] is LSL_Types.LSLInteger)
|
||||
@@ -591,26 +603,14 @@ namespace OpenSim.Region.ScriptEngine.Shared
|
||||
|
||||
public LSL_Types.LSLString GetLSLStringItem(int itemIndex)
|
||||
{
|
||||
if (m_data[itemIndex] is LSL_Types.key)
|
||||
{
|
||||
return (LSL_Types.key)m_data[itemIndex];
|
||||
}
|
||||
else if (m_data[itemIndex] is String)
|
||||
{
|
||||
return new LSL_Types.LSLString((string)m_data[itemIndex]);
|
||||
}
|
||||
else if (m_data[itemIndex] is LSL_Types.LSLFloat)
|
||||
{
|
||||
return new LSL_Types.LSLString((LSLFloat)m_data[itemIndex]);
|
||||
}
|
||||
else if (m_data[itemIndex] is LSL_Types.LSLInteger)
|
||||
{
|
||||
return new LSL_Types.LSLString((LSLInteger)m_data[itemIndex]);
|
||||
}
|
||||
else
|
||||
{
|
||||
return (LSL_Types.LSLString)m_data[itemIndex];
|
||||
}
|
||||
if (m_data[itemIndex] is LSL_Types.key)
|
||||
{
|
||||
return (LSL_Types.key)m_data[itemIndex];
|
||||
}
|
||||
else
|
||||
{
|
||||
return new LSL_Types.LSLString(m_data[itemIndex].ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public LSL_Types.LSLInteger GetLSLIntegerItem(int itemIndex)
|
||||
|
||||
@@ -286,7 +286,7 @@ namespace OpenSim.Server.Base
|
||||
e.InnerException == null ? e.Message : e.InnerException.Message,
|
||||
e.StackTrace);
|
||||
}
|
||||
m_log.ErrorFormat("[SERVER UTILS]: Error loading plugin {0}: {1}", dllName, e.Message);
|
||||
m_log.ErrorFormat("[SERVER UTILS]: Error loading plugin {0}: {1} args.Length {2}", dllName, e.Message, args.Length);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -76,10 +76,14 @@ namespace OpenSim.Server.Handlers.Hypergrid
|
||||
server.AddStreamHandler(new GatekeeperAgentHandler(m_GatekeeperService, m_Proxy));
|
||||
}
|
||||
|
||||
public GatekeeperServiceInConnector(IConfigSource config, IHttpServer server)
|
||||
: this(config, server, null)
|
||||
public GatekeeperServiceInConnector(IConfigSource config, IHttpServer server, string configName)
|
||||
: this(config, server, (ISimulationService)null)
|
||||
{
|
||||
}
|
||||
|
||||
public GatekeeperServiceInConnector(IConfigSource config, IHttpServer server)
|
||||
: this(config, server, String.Empty)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,10 +54,15 @@ namespace OpenSim.Server.Handlers.Hypergrid
|
||||
private IInstantMessage m_IMService;
|
||||
|
||||
public InstantMessageServerConnector(IConfigSource config, IHttpServer server) :
|
||||
this(config, server, null)
|
||||
this(config, server, (IInstantMessageSimConnector)null)
|
||||
{
|
||||
}
|
||||
|
||||
public InstantMessageServerConnector(IConfigSource config, IHttpServer server, string configName) :
|
||||
this(config, server)
|
||||
{
|
||||
}
|
||||
|
||||
public InstantMessageServerConnector(IConfigSource config, IHttpServer server, IInstantMessageSimConnector simConnector) :
|
||||
base(config, server, String.Empty)
|
||||
{
|
||||
|
||||
@@ -62,10 +62,15 @@ namespace OpenSim.Server.Handlers.Hypergrid
|
||||
private bool m_VerifyCallers = false;
|
||||
|
||||
public UserAgentServerConnector(IConfigSource config, IHttpServer server) :
|
||||
this(config, server, null)
|
||||
this(config, server, (IFriendsSimConnector)null)
|
||||
{
|
||||
}
|
||||
|
||||
public UserAgentServerConnector(IConfigSource config, IHttpServer server, string configName) :
|
||||
this(config, server)
|
||||
{
|
||||
}
|
||||
|
||||
public UserAgentServerConnector(IConfigSource config, IHttpServer server, IFriendsSimConnector friendsConnector) :
|
||||
base(config, server, String.Empty)
|
||||
{
|
||||
|
||||
@@ -60,8 +60,8 @@ namespace OpenSim.Server.Handlers.Login
|
||||
InitializeHandlers(server);
|
||||
}
|
||||
|
||||
public LLLoginServiceInConnector(IConfigSource config, IHttpServer server) :
|
||||
base(config, server, String.Empty)
|
||||
public LLLoginServiceInConnector(IConfigSource config, IHttpServer server, string configName) :
|
||||
base(config, server, configName)
|
||||
{
|
||||
string loginService = ReadLocalServiceFromConfig(config);
|
||||
|
||||
@@ -72,6 +72,11 @@ namespace OpenSim.Server.Handlers.Login
|
||||
InitializeHandlers(server);
|
||||
}
|
||||
|
||||
public LLLoginServiceInConnector(IConfigSource config, IHttpServer server) :
|
||||
this(config, server, String.Empty)
|
||||
{
|
||||
}
|
||||
|
||||
private string ReadLocalServiceFromConfig(IConfigSource config)
|
||||
{
|
||||
IConfig serverConfig = config.Configs["LoginService"];
|
||||
|
||||
@@ -241,7 +241,7 @@ namespace OpenSim.Server.Handlers.Simulation
|
||||
if (action.Equals("release"))
|
||||
ReleaseAgent(regionID, id);
|
||||
else
|
||||
m_SimulationService.CloseAgent(destination, id);
|
||||
Util.FireAndForget(delegate { m_SimulationService.CloseAgent(destination, id); });
|
||||
|
||||
responsedata["int_response_code"] = HttpStatusCode.OK;
|
||||
responsedata["str_response_string"] = "OpenSim agent " + id.ToString();
|
||||
|
||||
Reference in New Issue
Block a user