diff --git a/OpenSim/Region/Environment/Interfaces/IDialogModule.cs b/OpenSim/Region/Environment/Interfaces/IDialogModule.cs
index 45c62bddc9..755aa27502 100644
--- a/OpenSim/Region/Environment/Interfaces/IDialogModule.cs
+++ b/OpenSim/Region/Environment/Interfaces/IDialogModule.cs
@@ -92,7 +92,20 @@ namespace OpenSim.Region.Environment.Interfaces
///
void SendDialogToUser(
UUID avatarID, string objectName, UUID objectID, UUID ownerID,
- string message, UUID textureID, int ch, string[] buttonlabels);
+ string message, UUID textureID, int ch, string[] buttonlabels);
+
+ ///
+ /// Send a url to a particular user.
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ void SendUrlToUser(
+ UUID avatarID, string objectName, UUID objectID, UUID ownerID, bool groupOwned, string message, string url);
///
/// Send a notification to all users in the scene. This notification should remain around until the
diff --git a/OpenSim/Region/Environment/Modules/Avatar/Dialog/DialogModule.cs b/OpenSim/Region/Environment/Modules/Avatar/Dialog/DialogModule.cs
index 8fbe77fa66..4f8da9ad12 100644
--- a/OpenSim/Region/Environment/Modules/Avatar/Dialog/DialogModule.cs
+++ b/OpenSim/Region/Environment/Modules/Avatar/Dialog/DialogModule.cs
@@ -110,6 +110,15 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Dialog
if (sp != null)
sp.ControllingClient.SendDialog(objectName, objectID, ownerID, message, textureID, ch, buttonlabels);
}
+
+ public void SendUrlToUser(
+ UUID avatarID, string objectName, UUID objectID, UUID ownerID, bool groupOwned, string message, string url)
+ {
+ ScenePresence sp = m_scene.GetScenePresence(avatarID);
+
+ if (sp != null)
+ sp.ControllingClient.SendLoadURL(objectName, objectID, ownerID, groupOwned, message, url);
+ }
public void SendNotificationToUsersInEstate(
UUID fromAvatarID, string fromAvatarName, string message)
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index 655f15d178..3b4b719bd6 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -3354,29 +3354,6 @@ namespace OpenSim.Region.Environment.Scenes
m_timePhase = phase;
}
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- public void SendUrlToUser(UUID avatarID, string objectName, UUID objectID, UUID ownerID, bool groupOwned,
- string message, string url)
- {
- lock (m_scenePresences)
- {
- if (m_scenePresences.ContainsKey(avatarID))
- {
- m_scenePresences[avatarID].ControllingClient.SendLoadURL(objectName, objectID, ownerID, groupOwned,
- message, url);
- }
- }
- }
-
public virtual void StoreAddFriendship(UUID ownerID, UUID friendID, uint perms)
{
m_sceneGridService.AddNewUserFriend(ownerID, friendID, perms);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index f2a84747bc..34a3a26acd 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -7799,9 +7799,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
public void llLoadURL(string avatar_id, string message, string url)
{
m_host.AddScriptLPS(1);
- UUID avatarId = new UUID(avatar_id);
- m_ScriptEngine.World.SendUrlToUser(avatarId, m_host.Name, m_host.UUID, m_host.ObjectOwner, false, message,
- url);
+
+ IDialogModule dm = World.RequestModuleInterface();
+ if (null != dm)
+ dm.SendUrlToUser(
+ new UUID(avatar_id), m_host.Name, m_host.UUID, m_host.ObjectOwner, false, message, url);
+
// ScriptSleep(10000);
}