diff --git a/OpenSim/Framework/Communications/IGridServices.cs b/OpenSim/Framework/Communications/IGridServices.cs
index f6a28852df..177009d5be 100644
--- a/OpenSim/Framework/Communications/IGridServices.cs
+++ b/OpenSim/Framework/Communications/IGridServices.cs
@@ -47,6 +47,12 @@ namespace OpenSim.Framework.Communications
/// Thrown if region registration failed
RegionCommsListener RegisterRegion(RegionInfo regionInfos);
+ ///
+ /// Deregister a region with the grid service.
+ ///
+ ///
+ ///
+ /// Thrown if region deregistration failed
bool DeregisterRegion(RegionInfo regionInfo);
///
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs b/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs
index eddee10f21..d885e3b355 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs
@@ -96,6 +96,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// A list of the packets we haven't acked yet
//
private Dictionary m_PendingAcks = new Dictionary();
+
// Dictionary of the packets that need acks from the client.
//
private class AckData
@@ -109,6 +110,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public Packet Packet;
public Object Identifier;
}
+
private Dictionary m_NeedAck =
new Dictionary();
diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
index 45d09315ea..537947bcaa 100644
--- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
+++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
@@ -141,11 +141,11 @@ namespace OpenSim.Region.Communications.OGS1
SendParams.Add(GridParams);
// Send Request
+ XmlRpcRequest GridReq = new XmlRpcRequest("simulator_login", SendParams);
XmlRpcResponse GridResp;
+
try
- {
- XmlRpcRequest GridReq = new XmlRpcRequest("simulator_login", SendParams);
-
+ {
// The timeout should always be significantly larger than the timeout for the grid server to request
// the initial status of the region before confirming registration.
GridResp = GridReq.Send(serversInfo.GridURL, 90000);
@@ -154,7 +154,9 @@ namespace OpenSim.Region.Communications.OGS1
{
Exception e2
= new Exception(
- String.Format("Unable to connect to grid at {0}. Grid service not running?", serversInfo.GridURL),
+ String.Format(
+ "Unable to register region with grid at {0}. Grid service not running?",
+ serversInfo.GridURL),
e);
throw(e2);
@@ -193,6 +195,7 @@ namespace OpenSim.Region.Communications.OGS1
return m_localBackend.RegisterRegion(regionInfo);
}
+ // see IGridServices
public bool DeregisterRegion(RegionInfo regionInfo)
{
Hashtable GridParams = new Hashtable();
@@ -205,7 +208,24 @@ namespace OpenSim.Region.Communications.OGS1
// Send Request
XmlRpcRequest GridReq = new XmlRpcRequest("simulator_after_region_moved", SendParams);
- XmlRpcResponse GridResp = GridReq.Send(serversInfo.GridURL, 10000);
+ XmlRpcResponse GridResp = null;
+
+ try
+ {
+ GridResp = GridReq.Send(serversInfo.GridURL, 10000);
+ }
+ catch (Exception e)
+ {
+ Exception e2
+ = new Exception(
+ String.Format(
+ "Unable to deregister region with grid at {0}. Grid service not running?",
+ serversInfo.GridURL),
+ e);
+
+ throw(e2);
+ }
+
Hashtable GridRespData = (Hashtable) GridResp.Value;
// Hashtable griddatahash = GridRespData;
diff --git a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
index 887a8dacbc..c95068b854 100644
--- a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
@@ -135,7 +135,18 @@ namespace OpenSim.Region.Environment.Scenes
regionCommsHost.OnAvatarCrossingIntoRegion -= AgentCrossing;
regionCommsHost.OnCloseAgentConnection -= CloseConnection;
regionCommsHost.OnGetLandData -= FetchLandData;
- m_commsProvider.GridService.DeregisterRegion(m_regionInfo);
+
+ try
+ {
+ m_commsProvider.GridService.DeregisterRegion(m_regionInfo);
+ }
+ catch (Exception e)
+ {
+ m_log.ErrorFormat(
+ "[GRID]: Deregistration of region {0} from the grid failed - {1}. Continuing",
+ m_regionInfo.RegionName, e);
+ }
+
regionCommsHost = null;
}
}