* Sanity check for invalid response data during login in libomv and GridClient
* Couple of tiny fixes here and there git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2806 52acb1d6-8a22-11de-b505-999d5b087335
This commit is contained in:
@@ -1420,7 +1420,7 @@ namespace OpenMetaverse
|
||||
|
||||
// Start the request
|
||||
Thread requestThread = new Thread(
|
||||
(ThreadStart)delegate()
|
||||
delegate()
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -1478,9 +1478,16 @@ namespace OpenMetaverse
|
||||
uint regionY = 0;
|
||||
|
||||
// Fetch the login response
|
||||
if (response == null || !(response.Value is Hashtable))
|
||||
{
|
||||
UpdateLoginStatus(LoginStatus.Failed, "Invalid or missing login response from the server");
|
||||
Logger.Log("Invalid or missing login response from the server", Helpers.LogLevel.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
reply.Parse(response.Value as Hashtable);
|
||||
reply.Parse((Hashtable)response.Value);
|
||||
if (context.LoginID != CurrentContext.Value.LoginID)
|
||||
{
|
||||
Logger.Log("Login response does not match login request. Only one login can be attempted at a time",
|
||||
@@ -1490,8 +1497,8 @@ namespace OpenMetaverse
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
UpdateLoginStatus(LoginStatus.Failed, "Error retrieving the login response from the server " + e.Message );
|
||||
Logger.Log("Login response failure: " + e.Message + " " + e.StackTrace, Helpers.LogLevel.Debug);
|
||||
UpdateLoginStatus(LoginStatus.Failed, "Error retrieving the login response from the server: " + e.Message);
|
||||
Logger.Log("Login response failure: " + e.Message + " " + e.StackTrace, Helpers.LogLevel.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -113,8 +113,6 @@ namespace OpenMetaverse
|
||||
{
|
||||
Simulator = simulator;
|
||||
Buffer = buffer;
|
||||
ResendCount = 0;
|
||||
TickCount = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -901,11 +901,10 @@ namespace OpenMetaverse
|
||||
|
||||
// Send out ACKs if we have a lot of them
|
||||
if (pendingAckCount >= Client.Settings.MAX_PENDING_ACKS)
|
||||
{
|
||||
SendAcks();
|
||||
}
|
||||
|
||||
if (packet.Header.Resent) ++Stats.ReceivedResends;
|
||||
if (packet.Header.Resent)
|
||||
Interlocked.Increment(ref Stats.ReceivedResends);
|
||||
}
|
||||
|
||||
#endregion Reliable Handling
|
||||
@@ -916,7 +915,6 @@ namespace OpenMetaverse
|
||||
incomingPacket.Simulator = this;
|
||||
incomingPacket.Packet = packet;
|
||||
|
||||
// TODO: Prioritize the queue
|
||||
Network.PacketInbox.Enqueue(incomingPacket);
|
||||
|
||||
#endregion Inbox Insertion
|
||||
|
||||
@@ -1016,6 +1016,7 @@ namespace GridProxy
|
||||
|
||||
// call the loginRequestDelegate
|
||||
if (loginRequestDelegate != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
loginRequestDelegate(request);
|
||||
@@ -1024,6 +1025,7 @@ namespace GridProxy
|
||||
{
|
||||
OpenMetaverse.Logger.Log("Exception in login request delegate" + e, Helpers.LogLevel.Error, e);
|
||||
}
|
||||
}
|
||||
|
||||
XmlRpcResponse response;
|
||||
try
|
||||
@@ -1038,7 +1040,30 @@ namespace GridProxy
|
||||
return;
|
||||
}
|
||||
|
||||
System.Collections.Hashtable responseData = (System.Collections.Hashtable)response.Value;
|
||||
// call the loginResponseDelegate
|
||||
if (loginResponseDelegate != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
loginResponseDelegate(response);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Log("exception in login response delegate: " + e.Message, true);
|
||||
Log(e.StackTrace, true);
|
||||
}
|
||||
}
|
||||
|
||||
System.Collections.Hashtable responseData;
|
||||
try
|
||||
{
|
||||
responseData = (System.Collections.Hashtable)response.Value;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
OpenMetaverse.Logger.Log(e.Message, Helpers.LogLevel.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
// proxy any simulator address given in the XML-RPC response
|
||||
if (responseData.Contains("sim_ip") && responseData.Contains("sim_port"))
|
||||
@@ -1062,19 +1087,6 @@ namespace GridProxy
|
||||
responseData["seed_capability"] = loginURI + responseData["seed_capability"];
|
||||
}
|
||||
|
||||
// call the loginResponseDelegate
|
||||
if (loginResponseDelegate != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
loginResponseDelegate(response);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
OpenMetaverse.Logger.Log("Error in login response delegate", Helpers.LogLevel.Error, e);
|
||||
}
|
||||
}
|
||||
|
||||
// forward the XML-RPC response to the client
|
||||
StreamWriter writer = new StreamWriter(netStream);
|
||||
writer.Write("HTTP/1.0 200 OK\r\n");
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace OpenMetaverse.TestClient
|
||||
private static void Usage()
|
||||
{
|
||||
Console.WriteLine("Usage: " + Environment.NewLine +
|
||||
"TestClient.exe --first firstname --last lastname --pass password [--loginuri=\"uri\"] [--startpos \"sim/x/y/z\"] [--master \"master name\"] [--masterkey \"master uuid\"] [--gettextures] [--scriptfile \"filename\"]");
|
||||
"TestClient.exe [--first firstname --last lastname --pass password] [--file userlist.txt] [--loginuri=\"uri\"] [--startpos \"sim/x/y/z\"] [--master \"master name\"] [--masterkey \"master uuid\"] [--gettextures] [--scriptfile \"filename\"]");
|
||||
}
|
||||
|
||||
static void Main(string[] args)
|
||||
|
||||
Reference in New Issue
Block a user