aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
diff options
context:
space:
mode:
authorJustin Clarke Casey2008-10-24 21:22:54 +0000
committerJustin Clarke Casey2008-10-24 21:22:54 +0000
commit3340a579e72f1248bb092a705db068027e46ef75 (patch)
treede14319e2adc598dff0fd7557fc4f9d807ac55a2 /OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
parentun-double-flipped some double-flipped normals in circular path prim end caps (diff)
downloadopensim-SC_OLD-3340a579e72f1248bb092a705db068027e46ef75.zip
opensim-SC_OLD-3340a579e72f1248bb092a705db068027e46ef75.tar.gz
opensim-SC_OLD-3340a579e72f1248bb092a705db068027e46ef75.tar.bz2
opensim-SC_OLD-3340a579e72f1248bb092a705db068027e46ef75.tar.xz
* Stop creating a circuit if the client fails authentication (i.e. the region server wasn't told that it was coming)
* This moves authentication from the client thread (where failure was difficult to detect) to the particular thread handling that packet * I've kept the authentication outside of the crucial clientCircuits lock (though any delay here is probably swamped by the other delays associated with login) * Also added more to the unit test to ensure this doesn't regress
Diffstat (limited to 'OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs')
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs33
1 files changed, 29 insertions, 4 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
index 2e9af74..40b4a42 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
@@ -385,11 +385,25 @@ namespace OpenSim.Region.ClientStack.LindenUDP
385 //Slave regions don't accept new clients 385 //Slave regions don't accept new clients
386 if (m_localScene.Region_Status != RegionStatus.SlaveScene) 386 if (m_localScene.Region_Status != RegionStatus.SlaveScene)
387 { 387 {
388 AuthenticateResponse sessionInfo;
388 bool isNewCircuit = false; 389 bool isNewCircuit = false;
389 390
391 if (!m_packetServer.IsClientAuthorized(useCircuit, m_circuitManager, out sessionInfo))
392 {
393 m_log.WarnFormat(
394 "[CLIENT]: New user request denied to avatar {0} connecting with unauthorized circuit code {1} from {2}",
395 useCircuit.CircuitCode.ID, useCircuit.CircuitCode.Code, epSender);
396
397 return;
398 }
399 else
400 {
401 m_log.Info("[CLIENT]: Got authenticated connection from " + epSender);
402 }
403
390 lock (clientCircuits) 404 lock (clientCircuits)
391 { 405 {
392 if (!clientCircuits.ContainsKey(epSender)) 406 if (!clientCircuits.ContainsKey(epSender))
393 { 407 {
394 m_log.DebugFormat( 408 m_log.DebugFormat(
395 "[CLIENT]: Adding new circuit for agent {0}, circuit code {1}", 409 "[CLIENT]: Adding new circuit for agent {0}, circuit code {1}",
@@ -409,8 +423,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
409 { 423 {
410 proxyCircuits[useCircuit.CircuitCode.Code] = epProxy; 424 proxyCircuits[useCircuit.CircuitCode.Code] = epProxy;
411 } 425 }
412 426
413 m_packetServer.AddNewClient(epSender, useCircuit, m_assetCache, m_circuitManager, epProxy); 427 m_packetServer.AddNewClient(epSender, useCircuit, m_assetCache, sessionInfo, epProxy);
414 } 428 }
415 } 429 }
416 430
@@ -533,6 +547,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP
533 useCircuit.CircuitCode.Code = circuit.circuitcode; 547 useCircuit.CircuitCode.Code = circuit.circuitcode;
534 useCircuit.CircuitCode.ID = circuit.AgentID; 548 useCircuit.CircuitCode.ID = circuit.AgentID;
535 useCircuit.CircuitCode.SessionID = circuit.SessionID; 549 useCircuit.CircuitCode.SessionID = circuit.SessionID;
550
551 AuthenticateResponse sessionInfo;
552
553 if (!m_packetServer.IsClientAuthorized(useCircuit, m_circuitManager, out sessionInfo))
554 {
555 m_log.WarnFormat(
556 "[CLIENT]: Restore request denied to avatar {0} connecting with unauthorized circuit code {1}",
557 useCircuit.CircuitCode.ID, useCircuit.CircuitCode.Code);
558
559 return;
560 }
536 561
537 lock (clientCircuits) 562 lock (clientCircuits)
538 { 563 {
@@ -562,7 +587,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
562 } 587 }
563 } 588 }
564 589
565 m_packetServer.AddNewClient(userEP, useCircuit, m_assetCache, m_circuitManager, proxyEP); 590 m_packetServer.AddNewClient(userEP, useCircuit, m_assetCache, sessionInfo, proxyEP);
566 } 591 }
567 } 592 }
568} 593}