diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Server/Handlers/Login/LLLoginHandlers.cs | 2 | ||||
-rw-r--r-- | OpenSim/Server/Handlers/Simulation/AgentHandlers.cs | 40 |
2 files changed, 20 insertions, 22 deletions
diff --git a/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs b/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs index 072429a..4e7ab00 100644 --- a/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs +++ b/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs | |||
@@ -64,7 +64,7 @@ namespace OpenSim.Server.Handlers.Login | |||
64 | public XmlRpcResponse HandleXMLRPCLogin(XmlRpcRequest request, IPEndPoint remoteClient) | 64 | public XmlRpcResponse HandleXMLRPCLogin(XmlRpcRequest request, IPEndPoint remoteClient) |
65 | { | 65 | { |
66 | Hashtable requestData = (Hashtable)request.Params[0]; | 66 | Hashtable requestData = (Hashtable)request.Params[0]; |
67 | if (m_Proxy && request.Params[3] != null) | 67 | if (request.Params[3] != null) |
68 | { | 68 | { |
69 | IPEndPoint ep = Util.GetClientIPFromXFF((string)request.Params[3]); | 69 | IPEndPoint ep = Util.GetClientIPFromXFF((string)request.Params[3]); |
70 | if (ep != null) | 70 | if (ep != null) |
diff --git a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs index 4e1f72e..bb524e6 100644 --- a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs +++ b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs | |||
@@ -517,32 +517,30 @@ namespace OpenSim.Server.Handlers.Simulation | |||
517 | 517 | ||
518 | protected string GetCallerIP(Hashtable request) | 518 | protected string GetCallerIP(Hashtable request) |
519 | { | 519 | { |
520 | if (!m_Proxy) | 520 | if (request.ContainsKey("headers")) |
521 | return Util.GetCallerIP(request); | 521 | { |
522 | 522 | Hashtable headers = (Hashtable)request["headers"]; | |
523 | // We're behind a proxy | ||
524 | Hashtable headers = (Hashtable)request["headers"]; | ||
525 | |||
526 | //// DEBUG | ||
527 | //foreach (object o in headers.Keys) | ||
528 | // m_log.DebugFormat("XXX {0} = {1}", o.ToString(), (headers[o] == null? "null" : headers[o].ToString())); | ||
529 | 523 | ||
530 | string xff = "X-Forwarded-For"; | 524 | //// DEBUG |
531 | if (headers.ContainsKey(xff.ToLower())) | 525 | //foreach (object o in headers.Keys) |
532 | xff = xff.ToLower(); | 526 | // m_log.DebugFormat("XXX {0} = {1}", o.ToString(), (headers[o] == null? "null" : headers[o].ToString())); |
533 | 527 | ||
534 | if (!headers.ContainsKey(xff) || headers[xff] == null) | 528 | string xff = "X-Forwarded-For"; |
535 | { | 529 | if (!headers.ContainsKey(xff)) |
536 | m_log.WarnFormat("[AGENT HANDLER]: No XFF header"); | 530 | xff = xff.ToLower(); |
537 | return Util.GetCallerIP(request); | ||
538 | } | ||
539 | 531 | ||
540 | m_log.DebugFormat("[AGENT HANDLER]: XFF is {0}", headers[xff]); | 532 | if (!headers.ContainsKey(xff) || headers[xff] == null) |
533 | { | ||
534 | m_log.WarnFormat("[AGENT HANDLER]: No XFF header"); | ||
535 | return Util.GetCallerIP(request); | ||
536 | } | ||
541 | 537 | ||
542 | IPEndPoint ep = Util.GetClientIPFromXFF((string)headers[xff]); | 538 | m_log.DebugFormat("[AGENT HANDLER]: XFF is {0}", headers[xff]); |
543 | if (ep != null) | ||
544 | return ep.Address.ToString(); | ||
545 | 539 | ||
540 | IPEndPoint ep = Util.GetClientIPFromXFF((string)headers[xff]); | ||
541 | if (ep != null) | ||
542 | return ep.Address.ToString(); | ||
543 | } | ||
546 | // Oops | 544 | // Oops |
547 | return Util.GetCallerIP(request); | 545 | return Util.GetCallerIP(request); |
548 | } | 546 | } |