From adbdbc675bcac123f3dcbc6ff81c3f811e4b44f1 Mon Sep 17 00:00:00 2001
From: Tedd Hansen
Date: Sat, 12 Jan 2008 01:25:35 +0000
Subject: Added global exception handler with possibility of reporting crash
details directly to developers (disabled for now)
---
OpenSim/Region/Application/Application.cs | 39 +++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
(limited to 'OpenSim/Region/Application')
diff --git a/OpenSim/Region/Application/Application.cs b/OpenSim/Region/Application/Application.cs
index cb3bd40..de58a8c 100644
--- a/OpenSim/Region/Application/Application.cs
+++ b/OpenSim/Region/Application/Application.cs
@@ -26,6 +26,7 @@
*
*/
using System;
+using System.Net;
using Nini.Config;
using OpenSim.Framework;
using OpenSim.Framework.Console;
@@ -38,6 +39,8 @@ namespace OpenSim
[STAThread]
public static void Main(string[] args)
{
+ AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
+
Console.WriteLine("OpenSim " + VersionInfo.Version + "\n");
@@ -76,5 +79,41 @@ namespace OpenSim
MainLog.Instance.MainLogPrompt();
}
}
+
+ ///
+ /// Global exception handler -- all unhandlet exceptions end up here :)
+ ///
+ ///
+ ///
+ private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
+ {
+ // TODO: Add config option to allow users to turn off error reporting
+ // TODO: Post error report (disabled for now)
+
+ string msg = "";
+ msg += "\r\n";
+ msg += "APPLICATION EXCEPTION DETECTED\r\n";
+ msg += "\r\n";
+ msg += "Application is terminating: " + e.IsTerminating.ToString() + "\r\n";
+ msg += "Exception:";
+ msg += e.ExceptionObject.ToString();
+ Console.WriteLine(msg);
+
+ // Try to post errormessage to an URL
+ try
+ {
+ // DISABLED UNTIL WE CAN DISCUSS IF THIS IS MORALLY RIGHT OR NOT
+ // Note! Needs reference to System.Web
+ //System.Net.WebClient wc = new WebClient();
+ //wc.DownloadData("http://www.opensimulator.org/ErrorReport.php?Msg=" +
+ // System.Web.HttpUtility.UrlEncode(msg));
+ //wc.Dispose();
+ }
+ catch (Exception)
+ {
+ // Ignore
+ }
+ }
+
}
}
\ No newline at end of file
--
cgit v1.1