diff --git a/OpenGridServices/OpenGridServices.UserServer/UserManager.cs b/OpenGridServices/OpenGridServices.UserServer/UserManager.cs index fdda63bcef..eb987836f5 100644 --- a/OpenGridServices/OpenGridServices.UserServer/UserManager.cs +++ b/OpenGridServices/OpenGridServices.UserServer/UserManager.cs @@ -276,6 +276,21 @@ namespace OpenGridServices.UserServer return response; } + /// + /// Creates an error response caused by target region being down + /// + /// An XMLRPC Response + private static XmlRpcResponse CreateDeadRegionResponse() + { + XmlRpcResponse response = new XmlRpcResponse(); + Hashtable PresenceErrorRespData = new Hashtable(); + PresenceErrorRespData["reason"] = "key"; + PresenceErrorRespData["message"] = "The region you are attempting to log into is not responding. Please select another region and try again."; + PresenceErrorRespData["login"] = "false"; + response.Value = PresenceErrorRespData; + return response; + } + /// /// Customises the login response and fills in missing values. /// @@ -560,7 +575,15 @@ namespace OpenGridServices.UserServer responseData["session_id"] = TheUser.currentAgent.sessionID.ToStringHyphenated(); responseData["login"] = "true"; - this.CustomiseResponse(ref responseData, ref TheUser); + try + { + this.CustomiseResponse(ref responseData, ref TheUser); + } + catch (Exception e) + { + return CreateDeadRegionResponse(); + Console.WriteLine(e.ToString()); + } CommitAgent(ref TheUser);