diff --git a/OpenSim/Region/ClientStack/LindenUDP/Tests/BasicCircuitTests.cs b/OpenSim/Region/ClientStack/LindenUDP/Tests/BasicCircuitTests.cs
index 07fbf55fe8..c75a5b3392 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/Tests/BasicCircuitTests.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/Tests/BasicCircuitTests.cs
@@ -62,7 +62,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
///
///
/// Agent circuit manager used in setting up the stack
- protected void SetupStack( out TestLLUDPServer testLLUDPServer, out AgentCircuitManager acm)
+ protected void SetupStack(out TestLLUDPServer testLLUDPServer, out AgentCircuitManager acm)
{
ClientStackUserSettings userSettings = new ClientStackUserSettings();
testLLUDPServer = new TestLLUDPServer();
@@ -78,9 +78,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
/// Set up a client for tests which aren't concerned with this process itself
///
///
+ ///
///
///
- protected void AddClient(uint circuitCode, TestLLUDPServer testLLUDPServer, AgentCircuitManager acm)
+ protected void AddClient(
+ uint circuitCode, EndPoint epSender, TestLLUDPServer testLLUDPServer, AgentCircuitManager acm)
{
UUID myAgentUuid = UUID.Parse("00000000-0000-0000-0000-000000000001");
UUID mySessionUuid = UUID.Parse("00000000-0000-0000-0000-000000000002");
@@ -97,19 +99,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
uccpCcBlock.ID = myAgentUuid;
uccpCcBlock.SessionID = mySessionUuid;
uccp.CircuitCode = uccpCcBlock;
-
- EndPoint testEp = new IPEndPoint(IPAddress.Loopback, 999);
-
+
acm.AddNewCircuit(circuitCode, acd);
- testLLUDPServer.LoadReceive(uccp, testEp);
+ testLLUDPServer.LoadReceive(uccp, epSender);
testLLUDPServer.ReceiveData(null);
}
- [Test]
///
/// Test adding a client to the stack
///
+ [Test]
public void TestAddClient()
{
uint myCircuitCode = 123456;
@@ -151,10 +151,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
Assert.IsFalse(testLLUDPServer.HasCircuit(101));
}
- [Test]
///
/// Test removing a client from the stack
///
+ [Test]
public void TestRemoveClient()
{
uint myCircuitCode = 123457;
@@ -162,7 +162,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
TestLLUDPServer testLLUDPServer;
AgentCircuitManager acm;
SetupStack(out testLLUDPServer, out acm);
- AddClient(myCircuitCode, testLLUDPServer, acm);
+ AddClient(myCircuitCode, new IPEndPoint(IPAddress.Loopback, 1000), testLLUDPServer, acm);
testLLUDPServer.RemoveClientCircuit(myCircuitCode);
Assert.IsFalse(testLLUDPServer.HasCircuit(myCircuitCode));
@@ -171,5 +171,28 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
testLLUDPServer.RemoveClientCircuit(101);
Assert.IsFalse(testLLUDPServer.HasCircuit(101));
}
+
+ ///
+ /// Make sure that the client stack reacts okay to malformed packets
+ ///
+ [Test]
+ public void TestMalformedPacketSend()
+ {
+ uint myCircuitCode = 123458;
+ EndPoint testEp = new IPEndPoint(IPAddress.Loopback, 1001);
+
+ TestLLUDPServer testLLUDPServer;
+ AgentCircuitManager acm;
+ SetupStack(out testLLUDPServer, out acm);
+ AddClient(myCircuitCode, testEp, testLLUDPServer, acm);
+
+ byte[] data = new byte[] { 0x01, 0x02, 0x03, 0x04 };
+
+ testLLUDPServer.LoadReceive(data, testEp);
+ testLLUDPServer.ReceiveData(null);
+
+ // Check that we are still here
+ Assert.IsTrue(testLLUDPServer.HasCircuit(myCircuitCode));
+ }
}
}
diff --git a/OpenSim/Region/ClientStack/LindenUDP/Tests/TestLLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/Tests/TestLLUDPServer.cs
index 81701501d6..95ee516349 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/Tests/TestLLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/Tests/TestLLUDPServer.cs
@@ -71,13 +71,23 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
// Don't do anything just yet
}
+ ///
+ /// Load some data to be received by the LLUDPServer on the next receive call
+ ///
+ ///
+ ///
+ public void LoadReceive(byte[] data, EndPoint epSender)
+ {
+ m_chunksToLoad.Enqueue(new ChunkSenderTuple(data, epSender));
+ }
+
///
/// Load a packet to be received by the LLUDPServer on the next receive call
///
///
public void LoadReceive(Packet packet, EndPoint epSender)
{
- m_chunksToLoad.Enqueue(new ChunkSenderTuple(packet.ToBytes(), epSender));
+ LoadReceive(packet.ToBytes(), epSender);
}
///