From a7f5e09c7f43c1bff9e97754d60d8e1cff26e745 Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Sun, 22 Feb 2009 09:31:24 +0000 Subject: * Updates MXP.dll to latest version. * MXP: Corrects an issue whereby session requests were never correctly acknowledged. --- .../Client/MXP/PacketHandler/MXPPacketServer.cs | 46 ++++++++++++++++------ 1 file changed, 35 insertions(+), 11 deletions(-) (limited to 'OpenSim/Client/MXP/PacketHandler/MXPPacketServer.cs') diff --git a/OpenSim/Client/MXP/PacketHandler/MXPPacketServer.cs b/OpenSim/Client/MXP/PacketHandler/MXPPacketServer.cs index 1687205..2634717 100644 --- a/OpenSim/Client/MXP/PacketHandler/MXPPacketServer.cs +++ b/OpenSim/Client/MXP/PacketHandler/MXPPacketServer.cs @@ -25,6 +25,7 @@ namespace OpenSim.Client.MXP.PacketHandler private readonly Transmitter transmitter; private readonly IList sessions = new List(); + private readonly IList sessionsToClient = new List(); private readonly IList sessionsToRemove = new List(); private readonly String cloudUrl; @@ -217,24 +218,24 @@ namespace OpenSim.Client.MXP.PacketHandler { if (transmitter.PendingSessionCount > 0) { - sessions.Add(transmitter.AcceptPendingSession()); + Session tmp = transmitter.AcceptPendingSession(); + sessions.Add(tmp); + sessionsToClient.Add(tmp); + } - foreach (MXPClientView clientView in Clients) - { - - int messagesProcessedCount = 0; - Session session = clientView.Session; + List tmpRemove = new List(); + foreach (Session session in sessionsToClient) + { while (session.AvailableMessages > 0) { - Message message = session.Receive(); - if (message.GetType() == typeof(JoinRequestMessage)) + if (message.GetType() == typeof (JoinRequestMessage)) { - JoinRequestMessage joinRequestMessage = (JoinRequestMessage)message; + JoinRequestMessage joinRequestMessage = (JoinRequestMessage) message; bool authorized = AuthoriseUser(joinRequestMessage.ParticipantName, joinRequestMessage.ParticipantPassphrase, @@ -246,7 +247,9 @@ namespace OpenSim.Client.MXP.PacketHandler UUID mxpSessionID = UUID.Random(); - m_log.Info("[MXP ClientStack] Session join request success: " + session.SessionId + " (" + (session.IsIncoming ? "from" : "to") + " " + session.RemoteEndPoint.Address + ":" + session.RemoteEndPoint.Port + ")"); + m_log.Info("[MXP ClientStack] Session join request success: " + session.SessionId + " (" + + (session.IsIncoming ? "from" : "to") + " " + session.RemoteEndPoint.Address + ":" + + session.RemoteEndPoint.Port + ")"); AcceptConnection(session, joinRequestMessage, mxpSessionID); @@ -258,12 +261,33 @@ namespace OpenSim.Client.MXP.PacketHandler } else { - m_log.Info("[MXP ClientStack] Session join request failure: " + session.SessionId + " (" + (session.IsIncoming ? "from" : "to") + " " + session.RemoteEndPoint.Address + ":" + session.RemoteEndPoint.Port + ")"); + m_log.Info("[MXP ClientStack] Session join request failure: " + session.SessionId + " (" + + (session.IsIncoming ? "from" : "to") + " " + session.RemoteEndPoint.Address + ":" + + session.RemoteEndPoint.Port + ")"); DeclineConnection(session, joinRequestMessage); } + tmpRemove.Add(session); } + } + } + + foreach (Session session in tmpRemove) + { + sessionsToClient.Remove(session); + } + + foreach (MXPClientView clientView in Clients) + { + + int messagesProcessedCount = 0; + Session session = clientView.Session; + + while (session.AvailableMessages > 0) + { + Message message = session.Receive(); + if (message.GetType() == typeof(LeaveRequestMessage)) { -- cgit v1.1