Account for some component along the way lower-casing the HTTP header keys. (XFF header issue)

viewer-2-initial-appearance
Diva Canto 2011-01-17 11:37:39 -08:00
parent 0aeb8981b2
commit 479d72ac97
2 changed files with 24 additions and 22 deletions

View File

@ -215,16 +215,21 @@ namespace OpenSim.Server.Handlers.Hypergrid
// We're behind a proxy
Hashtable headers = (Hashtable)request["headers"];
if (headers.ContainsKey("X-Forwarded-For") && headers["X-Forwarded-For"] != null)
{
m_log.DebugFormat("[HOME AGENT HANDLER]: XFF is {0}", headers["X-Forwarded-For"]);
string xff = "X-Forwarded-For";
if (headers.ContainsKey(xff.ToLower()))
xff = xff.ToLower();
IPEndPoint ep = Util.GetClientIPFromXFF((string)headers["X-Forwarded-For"]);
if (ep != null)
return ep.Address.ToString();
if (!headers.ContainsKey(xff) || headers[xff] == null)
{
m_log.WarnFormat("[AGENT HANDLER]: No XFF header");
return Util.GetCallerIP(request);
}
else
m_log.WarnFormat("[HOME AGENT HANDLER]: No XFF header");
m_log.DebugFormat("[AGENT HANDLER]: XFF is {0}", headers[xff]);
IPEndPoint ep = Util.GetClientIPFromXFF((string)headers[xff]);
if (ep != null)
return ep.Address.ToString();
// Oops
return Util.GetCallerIP(request);

View File

@ -200,24 +200,21 @@ namespace OpenSim.Server.Handlers.Simulation
// We're behind a proxy
Hashtable headers = (Hashtable)request["headers"];
string xff = "X-Forwarded-For";
if (headers.ContainsKey(xff.ToLower()))
xff = xff.ToLower();
foreach (object o in headers.Keys)
if (!headers.ContainsKey(xff) || headers[xff] == null)
{
if (o != null)
m_log.DebugFormat("[XXX] {0}", o.ToString());
}
if (headers.ContainsKey("X-Forwarded-For") && headers["X-Forwarded-For"] != null)
{
m_log.DebugFormat("[AGENT HANDLER]: XFF is {0}", headers["X-Forwarded-For"]);
IPEndPoint ep = Util.GetClientIPFromXFF((string)headers["X-Forwarded-For"]);
if (ep != null)
return ep.Address.ToString();
}
else
m_log.WarnFormat("[AGENT HANDLER]: No XFF header");
return Util.GetCallerIP(request);
}
m_log.DebugFormat("[AGENT HANDLER]: XFF is {0}", headers[xff]);
IPEndPoint ep = Util.GetClientIPFromXFF((string)headers[xff]);
if (ep != null)
return ep.Address.ToString();
// Oops
return Util.GetCallerIP(request);