diff --git a/OpenGrid.Framework.Manager/GridServerManager.cs b/OpenGrid.Framework.Manager/GridServerManager.cs index 5c39cc1aab..7ebf66aeb8 100644 --- a/OpenGrid.Framework.Manager/GridServerManager.cs +++ b/OpenGrid.Framework.Manager/GridServerManager.cs @@ -3,6 +3,7 @@ using System.Collections; using System.Collections.Generic; using Nwc.XmlRpc; using System.Threading; +using libsecondlife; namespace OpenGrid.Framework.Manager { @@ -18,9 +19,19 @@ namespace OpenGrid.Framework.Manager { XmlRpcResponse response = new XmlRpcResponse(); Hashtable requestData = (Hashtable)request.Params[0]; Hashtable responseData = new Hashtable(); - - responseData["msg"]="Shutdown command accepted"; - (new Thread(new ThreadStart(ZOMGServerIsNowTerminallyIll))).Start(); + + if(requestData.ContainsKey("session_id")) { + if(GridManagementAgent.SessionExists(new LLUUID((string)requestData["session_id"]))) { + responseData["msg"]="Shutdown command accepted"; + (new Thread(new ThreadStart(ZOMGServerIsNowTerminallyIll))).Start(); + } else { + response.IsFault=true; + responseData["error"]="bad session ID"; + } + } else { + response.IsFault=true; + responseData["error"]="no session ID"; + } response.Value = responseData; return response;