aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Server/Base/ServicesServerBase.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Server/Base/ServicesServerBase.cs')
-rw-r--r--OpenSim/Server/Base/ServicesServerBase.cs36
1 files changed, 36 insertions, 0 deletions
diff --git a/OpenSim/Server/Base/ServicesServerBase.cs b/OpenSim/Server/Base/ServicesServerBase.cs
index f60b5fb..d151de6 100644
--- a/OpenSim/Server/Base/ServicesServerBase.cs
+++ b/OpenSim/Server/Base/ServicesServerBase.cs
@@ -61,6 +61,9 @@ namespace OpenSim.Server.Base
61 // 61 //
62 private bool m_Running = true; 62 private bool m_Running = true;
63 63
64 private static Mono.Unix.UnixSignal[] signals;
65
66
64 // Handle all the automagical stuff 67 // Handle all the automagical stuff
65 // 68 //
66 public ServicesServerBase(string prompt, string[] args) : base() 69 public ServicesServerBase(string prompt, string[] args) : base()
@@ -183,6 +186,39 @@ namespace OpenSim.Server.Base
183 RegisterCommonCommands(); 186 RegisterCommonCommands();
184 RegisterCommonComponents(Config); 187 RegisterCommonComponents(Config);
185 188
189 Thread signal_thread = new Thread (delegate ()
190 {
191 while (true)
192 {
193 // Wait for a signal to be delivered
194 int index = Mono.Unix.UnixSignal.WaitAny (signals, -1);
195
196 //Mono.Unix.Native.Signum signal = signals [index].Signum;
197 ShutdownSpecific();
198 m_Running = false;
199 Environment.Exit(0);
200 }
201 });
202
203 if(!Util.IsWindows())
204 {
205 try
206 {
207 // linux mac os specifics
208 signals = new Mono.Unix.UnixSignal[]
209 {
210 new Mono.Unix.UnixSignal(Mono.Unix.Native.Signum.SIGTERM)
211 };
212 signal_thread.Start();
213 }
214 catch (Exception e)
215 {
216 m_log.Info("Could not set up UNIX signal handlers. SIGTERM will not");
217 m_log.InfoFormat("shut down gracefully: {0}", e.Message);
218 m_log.Debug("Exception was: ", e);
219 }
220 }
221
186 // Allow derived classes to perform initialization that 222 // Allow derived classes to perform initialization that
187 // needs to be done after the console has opened 223 // needs to be done after the console has opened
188 Initialise(); 224 Initialise();