diff options
Diffstat (limited to 'OpenSim/Server/Handlers/Simulation/AgentHandlers.cs')
-rw-r--r-- | OpenSim/Server/Handlers/Simulation/AgentHandlers.cs | 40 |
1 files changed, 19 insertions, 21 deletions
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 | } |