diff --git a/OpenMetaverse/AgentManager.cs b/OpenMetaverse/AgentManager.cs index b5bc5e64..50caa290 100644 --- a/OpenMetaverse/AgentManager.cs +++ b/OpenMetaverse/AgentManager.cs @@ -2837,24 +2837,27 @@ namespace OpenMetaverse /// the teleport, or denying it /// /// of the avatar sending the lure + /// IM session of the incoming lure request /// true to accept the lure, false to decline it - public void TeleportLureRespond(UUID requesterID, bool accept) + public void TeleportLureRespond(UUID requesterID, UUID sessionID, bool accept) { - InstantMessage(Name, requesterID, String.Empty, UUID.Random(), - accept ? InstantMessageDialog.AcceptTeleport : InstantMessageDialog.DenyTeleport, - InstantMessageOnline.Offline, this.SimPosition, UUID.Zero, Utils.EmptyBytes); - if (accept) { TeleportLureRequestPacket lure = new TeleportLureRequestPacket(); lure.Info.AgentID = Client.Self.AgentID; lure.Info.SessionID = Client.Self.SessionID; - lure.Info.LureID = Client.Self.AgentID; + lure.Info.LureID = sessionID; lure.Info.TeleportFlags = (uint)TeleportFlags.ViaLure; Client.Network.SendPacket(lure); } + else + { + InstantMessage(Name, requesterID, String.Empty, sessionID, + accept ? InstantMessageDialog.AcceptTeleport : InstantMessageDialog.DenyTeleport, + InstantMessageOnline.Offline, this.SimPosition, UUID.Zero, Utils.EmptyBytes); + } } #endregion Teleporting diff --git a/Programs/examples/Dashboard/Dashboard.cs b/Programs/examples/Dashboard/Dashboard.cs index 314a05e4..3b042d79 100644 --- a/Programs/examples/Dashboard/Dashboard.cs +++ b/Programs/examples/Dashboard/Dashboard.cs @@ -86,7 +86,7 @@ namespace Dashboard { DialogResult result = MessageBox.Show(this, e.IM.FromAgentName + " has offered you a teleport request:" + Environment.NewLine + e.IM.Message, this.Text, MessageBoxButtons.YesNo); if (result == DialogResult.Yes) - Client.Self.TeleportLureRespond(e.IM.FromAgentID, true); + Client.Self.TeleportLureRespond(e.IM.FromAgentID, e.IM.IMSessionID, true); }); } } diff --git a/Programs/examples/IRCGateway/Program.cs b/Programs/examples/IRCGateway/Program.cs index 75cf9712..2e52da94 100644 --- a/Programs/examples/IRCGateway/Program.cs +++ b/Programs/examples/IRCGateway/Program.cs @@ -44,7 +44,7 @@ namespace IRCGateway { if (e.IM.FromAgentID == _MasterID) { - _Client.Self.TeleportLureRespond(e.IM.FromAgentID, true); + _Client.Self.TeleportLureRespond(e.IM.FromAgentID, e.IM.IMSessionID, true); } } } diff --git a/Programs/examples/TestClient/TestClient.cs b/Programs/examples/TestClient/TestClient.cs index 7201c76f..395315ec 100644 --- a/Programs/examples/TestClient/TestClient.cs +++ b/Programs/examples/TestClient/TestClient.cs @@ -77,7 +77,7 @@ namespace OpenMetaverse.TestClient if (e.IM.Dialog == InstantMessageDialog.RequestTeleport) { Console.WriteLine("Accepting teleport lure."); - Self.TeleportLureRespond(e.IM.FromAgentID, true); + Self.TeleportLureRespond(e.IM.FromAgentID, e.IM.IMSessionID, true); } else if ( e.IM.Dialog == InstantMessageDialog.MessageFromAgent ||