From 796216e44ff78b1088f9a977b810f16d98855f37 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Tue, 7 Dec 2010 20:05:53 -0800
Subject: Added an exception handler on CreateObject handler, just in case
 there's an exception being thrown that is silently being ignored by the http
 server. (Trying to catch Melanie's problem with attachments on TPs)

---
 .../Server/Handlers/Simulation/ObjectHandlers.cs   | 51 +++++++++++++---------
 1 file changed, 31 insertions(+), 20 deletions(-)

(limited to 'OpenSim/Server')

diff --git a/OpenSim/Server/Handlers/Simulation/ObjectHandlers.cs b/OpenSim/Server/Handlers/Simulation/ObjectHandlers.cs
index 04ff83f..984b843 100644
--- a/OpenSim/Server/Handlers/Simulation/ObjectHandlers.cs
+++ b/OpenSim/Server/Handlers/Simulation/ObjectHandlers.cs
@@ -84,32 +84,43 @@ namespace OpenSim.Server.Handlers.Simulation
                 return responsedata;
             }
 
-            // Next, let's parse the verb
-            string method = (string)request["http-method"];
-            if (method.Equals("POST"))
-            {
-                DoObjectPost(request, responsedata, regionID);
-                return responsedata;
-            }
-            else if (method.Equals("PUT"))
+            try
             {
-                DoObjectPut(request, responsedata, regionID);
-                return responsedata;
+                // Next, let's parse the verb
+                string method = (string)request["http-method"];
+                if (method.Equals("POST"))
+                {
+                    DoObjectPost(request, responsedata, regionID);
+                    return responsedata;
+                }
+                else if (method.Equals("PUT"))
+                {
+                    DoObjectPut(request, responsedata, regionID);
+                    return responsedata;
+                }
+                //else if (method.Equals("DELETE"))
+                //{
+                //    DoObjectDelete(request, responsedata, agentID, action, regionHandle);
+                //    return responsedata;
+                //}
+                else
+                {
+                    m_log.InfoFormat("[OBJECT HANDLER]: method {0} not supported in object message", method);
+                    responsedata["int_response_code"] = HttpStatusCode.MethodNotAllowed;
+                    responsedata["str_response_string"] = "Method not allowed";
+
+                    return responsedata;
+                }
             }
-            //else if (method.Equals("DELETE"))
-            //{
-            //    DoObjectDelete(request, responsedata, agentID, action, regionHandle);
-            //    return responsedata;
-            //}
-            else
+            catch (Exception e)
             {
-                m_log.InfoFormat("[OBJECT HANDLER]: method {0} not supported in object message", method);
-                responsedata["int_response_code"] = HttpStatusCode.MethodNotAllowed;
-                responsedata["str_response_string"] = "Mthod not allowed";
+                m_log.WarnFormat("[OBJECT HANDLER]: Caught exception {0}", e.StackTrace);
+                responsedata["int_response_code"] = HttpStatusCode.InternalServerError;
+                responsedata["str_response_string"] = "Internal server error";
 
                 return responsedata;
-            }
 
+            }
         }
 
         protected void DoObjectPost(Hashtable request, Hashtable responsedata, UUID regionID)
-- 
cgit v1.1