aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Capabilities/CapsHandlers.cs30
-rw-r--r--OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs63
-rw-r--r--OpenSim/Region/Application/OpenSim.cs33
-rw-r--r--OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs3
-rw-r--r--OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs3
-rw-r--r--OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs17
-rw-r--r--OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs5
-rw-r--r--OpenSim/Region/Physics/Meshing/Meshmerizer.cs15
8 files changed, 115 insertions, 54 deletions
diff --git a/OpenSim/Capabilities/CapsHandlers.cs b/OpenSim/Capabilities/CapsHandlers.cs
index e1c800e..a0e9ebc 100644
--- a/OpenSim/Capabilities/CapsHandlers.cs
+++ b/OpenSim/Capabilities/CapsHandlers.cs
@@ -147,25 +147,25 @@ namespace OpenSim.Framework.Capabilities
147 /// Return an LLSD-serializable Hashtable describing the 147 /// Return an LLSD-serializable Hashtable describing the
148 /// capabilities and their handler details. 148 /// capabilities and their handler details.
149 /// </summary> 149 /// </summary>
150 public Hashtable CapsDetails 150 /// <param name="excludeSeed">If true, then exclude the seed cap.</param>
151 public Hashtable GetCapsDetails(bool excludeSeed)
151 { 152 {
152 get 153 Hashtable caps = new Hashtable();
154 string protocol = "http://";
155
156 if (m_useSSL)
157 protocol = "https://";
158
159 string baseUrl = protocol + m_httpListenerHostName + ":" + m_httpListenerPort.ToString();
160 foreach (string capsName in m_capsHandlers.Keys)
153 { 161 {
154 Hashtable caps = new Hashtable(); 162 if (excludeSeed && "SEED" == capsName)
155 string protocol = "http://"; 163 continue;
156
157 if (m_useSSL)
158 protocol = "https://";
159 164
160 string baseUrl = protocol + m_httpListenerHostName + ":" + m_httpListenerPort.ToString(); 165 caps[capsName] = baseUrl + m_capsHandlers[capsName].Path;
161 foreach (string capsName in m_capsHandlers.Keys)
162 {
163 // skip SEED cap
164 if ("SEED" == capsName) continue;
165 caps[capsName] = baseUrl + m_capsHandlers[capsName].Path;
166 }
167 return caps;
168 } 166 }
167
168 return caps;
169 } 169 }
170 } 170 }
171} 171}
diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
index b45ed7b..04739fe 100644
--- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
+++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
@@ -79,6 +79,11 @@ namespace OpenSim.Framework.Servers.HttpServer
79 79
80 private PollServiceRequestManager m_PollServiceManager; 80 private PollServiceRequestManager m_PollServiceManager;
81 81
82 /// <summary>
83 /// Control the printing of certain debug messages.
84 /// </summary>
85 public int DebugLevel { get; set; }
86
82 public uint SSLPort 87 public uint SSLPort
83 { 88 {
84 get { return m_sslport; } 89 get { return m_sslport; }
@@ -442,17 +447,18 @@ namespace OpenSim.Framework.Servers.HttpServer
442 string path = request.RawUrl; 447 string path = request.RawUrl;
443 string handlerKey = GetHandlerKey(request.HttpMethod, path); 448 string handlerKey = GetHandlerKey(request.HttpMethod, path);
444 449
445// m_log.DebugFormat("[BASE HTTP SERVER]: Handling {0} request for {1}", request.HttpMethod, path);
446
447 if (TryGetStreamHandler(handlerKey, out requestHandler)) 450 if (TryGetStreamHandler(handlerKey, out requestHandler))
448 { 451 {
449 //m_log.Debug("[BASE HTTP SERVER]: Found Stream Handler"); 452 if (DebugLevel >= 1)
453 m_log.DebugFormat(
454 "[BASE HTTP SERVER]: Found stream handler for {0} {1}",
455 request.HttpMethod, request.Url.PathAndQuery);
456
450 // Okay, so this is bad, but should be considered temporary until everything is IStreamHandler. 457 // Okay, so this is bad, but should be considered temporary until everything is IStreamHandler.
451 byte[] buffer = null; 458 byte[] buffer = null;
452 459
453 response.ContentType = requestHandler.ContentType; // Lets do this defaulting before in case handler has varying content type. 460 response.ContentType = requestHandler.ContentType; // Lets do this defaulting before in case handler has varying content type.
454 461
455
456 if (requestHandler is IStreamedRequestHandler) 462 if (requestHandler is IStreamedRequestHandler)
457 { 463 {
458 IStreamedRequestHandler streamedRequestHandler = requestHandler as IStreamedRequestHandler; 464 IStreamedRequestHandler streamedRequestHandler = requestHandler as IStreamedRequestHandler;
@@ -480,7 +486,6 @@ namespace OpenSim.Framework.Servers.HttpServer
480 string[] querystringkeys = request.QueryString.AllKeys; 486 string[] querystringkeys = request.QueryString.AllKeys;
481 string[] rHeaders = request.Headers.AllKeys; 487 string[] rHeaders = request.Headers.AllKeys;
482 488
483
484 foreach (string queryname in querystringkeys) 489 foreach (string queryname in querystringkeys)
485 { 490 {
486 keysvals.Add(queryname, request.QueryString[queryname]); 491 keysvals.Add(queryname, request.QueryString[queryname]);
@@ -556,6 +561,7 @@ namespace OpenSim.Framework.Servers.HttpServer
556 { 561 {
557 m_log.Warn("[BASE HTTP SERVER]: XmlRpcRequest issue: " + e.Message); 562 m_log.Warn("[BASE HTTP SERVER]: XmlRpcRequest issue: " + e.Message);
558 } 563 }
564
559 return; 565 return;
560 } 566 }
561 567
@@ -566,7 +572,11 @@ namespace OpenSim.Framework.Servers.HttpServer
566 if (strAccept.Contains("application/llsd+xml") || 572 if (strAccept.Contains("application/llsd+xml") ||
567 strAccept.Contains("application/llsd+json")) 573 strAccept.Contains("application/llsd+json"))
568 { 574 {
569 //m_log.Info("[Debug BASE HTTP SERVER]: Found an application/llsd+xml accept header"); 575 if (DebugLevel >= 1)
576 m_log.DebugFormat(
577 "[BASE HTTP SERVER]: Found application/llsd+xml accept header handler for {0} {1}",
578 request.HttpMethod, request.Url.PathAndQuery);
579
570 HandleLLSDRequests(request, response); 580 HandleLLSDRequests(request, response);
571 return; 581 return;
572 } 582 }
@@ -577,15 +587,24 @@ namespace OpenSim.Framework.Servers.HttpServer
577 { 587 {
578 case null: 588 case null:
579 case "text/html": 589 case "text/html":
580// m_log.DebugFormat( 590
581// "[BASE HTTP SERVER]: Found a text/html content type for request {0}", request.RawUrl); 591 if (DebugLevel >= 1)
592 m_log.DebugFormat(
593 "[BASE HTTP SERVER]: Found a {0} content type handler for {1} {2}",
594 request.ContentType, request.HttpMethod, request.Url.PathAndQuery);
595
582 HandleHTTPRequest(request, response); 596 HandleHTTPRequest(request, response);
583 return; 597 return;
584 598
585 case "application/llsd+xml": 599 case "application/llsd+xml":
586 case "application/xml+llsd": 600 case "application/xml+llsd":
587 case "application/llsd+json": 601 case "application/llsd+json":
588 //m_log.Info("[Debug BASE HTTP SERVER]: found a application/llsd+xml content type"); 602
603 if (DebugLevel >= 1)
604 m_log.DebugFormat(
605 "[BASE HTTP SERVER]: Found a {0} content type handler for {1} {2}",
606 request.ContentType, request.HttpMethod, request.Url.PathAndQuery);
607
589 HandleLLSDRequests(request, response); 608 HandleLLSDRequests(request, response);
590 return; 609 return;
591 610
@@ -602,7 +621,11 @@ namespace OpenSim.Framework.Servers.HttpServer
602 //m_log.Info("[Debug BASE HTTP SERVER]: Checking for LLSD Handler"); 621 //m_log.Info("[Debug BASE HTTP SERVER]: Checking for LLSD Handler");
603 if (DoWeHaveALLSDHandler(request.RawUrl)) 622 if (DoWeHaveALLSDHandler(request.RawUrl))
604 { 623 {
605 //m_log.Info("[Debug BASE HTTP SERVER]: Found LLSD Handler"); 624 if (DebugLevel >= 1)
625 m_log.DebugFormat(
626 "[BASE HTTP SERVER]: Found a {0} content type handler for {1} {2}",
627 request.ContentType, request.HttpMethod, request.Url.PathAndQuery);
628
606 HandleLLSDRequests(request, response); 629 HandleLLSDRequests(request, response);
607 return; 630 return;
608 } 631 }
@@ -610,12 +633,20 @@ namespace OpenSim.Framework.Servers.HttpServer
610// m_log.DebugFormat("[BASE HTTP SERVER]: Checking for HTTP Handler for request {0}", request.RawUrl); 633// m_log.DebugFormat("[BASE HTTP SERVER]: Checking for HTTP Handler for request {0}", request.RawUrl);
611 if (DoWeHaveAHTTPHandler(request.RawUrl)) 634 if (DoWeHaveAHTTPHandler(request.RawUrl))
612 { 635 {
613// m_log.DebugFormat("[BASE HTTP SERVER]: Found HTTP Handler for request {0}", request.RawUrl); 636 if (DebugLevel >= 1)
637 m_log.DebugFormat(
638 "[BASE HTTP SERVER]: Found a {0} content type handler for {1} {2}",
639 request.ContentType, request.HttpMethod, request.Url.PathAndQuery);
640
614 HandleHTTPRequest(request, response); 641 HandleHTTPRequest(request, response);
615 return; 642 return;
616 } 643 }
617 644
618 //m_log.Info("[Debug BASE HTTP SERVER]: Generic XMLRPC"); 645 if (DebugLevel >= 1)
646 m_log.DebugFormat(
647 "[BASE HTTP SERVER]: Assuming a generic XMLRPC request for {0} {1}",
648 request.HttpMethod, request.Url.PathAndQuery);
649
619 // generic login request. 650 // generic login request.
620 HandleXmlRpcRequests(request, response); 651 HandleXmlRpcRequests(request, response);
621 652
@@ -872,7 +903,9 @@ namespace OpenSim.Framework.Servers.HttpServer
872 byte[] buf = Encoding.UTF8.GetBytes("Not found"); 903 byte[] buf = Encoding.UTF8.GetBytes("Not found");
873 response.KeepAlive = false; 904 response.KeepAlive = false;
874 905
875 m_log.ErrorFormat("[BASE HTTP SERVER]: Handler not found for http request {0}", request.RawUrl); 906 m_log.ErrorFormat(
907 "[BASE HTTP SERVER]: Handler not found for http request {0} {1}",
908 request.HttpMethod, request.Url.PathAndQuery);
876 909
877 response.SendChunked = false; 910 response.SendChunked = false;
878 response.ContentLength64 = buf.Length; 911 response.ContentLength64 = buf.Length;
@@ -978,7 +1011,6 @@ namespace OpenSim.Framework.Servers.HttpServer
978 1011
979 if (llsdRequest != null)// && m_defaultLlsdHandler != null) 1012 if (llsdRequest != null)// && m_defaultLlsdHandler != null)
980 { 1013 {
981
982 LLSDMethod llsdhandler = null; 1014 LLSDMethod llsdhandler = null;
983 1015
984 if (TryGetLLSDHandler(request.RawUrl, out llsdhandler) && !LegacyLLSDLoginLibOMV) 1016 if (TryGetLLSDHandler(request.RawUrl, out llsdhandler) && !LegacyLLSDLoginLibOMV)
@@ -1002,13 +1034,14 @@ namespace OpenSim.Framework.Servers.HttpServer
1002 llsdResponse = GenerateNoLLSDHandlerResponse(); 1034 llsdResponse = GenerateNoLLSDHandlerResponse();
1003 } 1035 }
1004 } 1036 }
1005
1006 } 1037 }
1007 else 1038 else
1008 { 1039 {
1009 llsdResponse = GenerateNoLLSDHandlerResponse(); 1040 llsdResponse = GenerateNoLLSDHandlerResponse();
1010 } 1041 }
1042
1011 byte[] buffer = new byte[0]; 1043 byte[] buffer = new byte[0];
1044
1012 if (llsdResponse.ToString() == "shutdown404!") 1045 if (llsdResponse.ToString() == "shutdown404!")
1013 { 1046 {
1014 response.ContentType = "text/plain"; 1047 response.ContentType = "text/plain";
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs
index f6ce291..b4dbeae 100644
--- a/OpenSim/Region/Application/OpenSim.cs
+++ b/OpenSim/Region/Application/OpenSim.cs
@@ -242,6 +242,14 @@ namespace OpenSim
242 + "If an avatar name is given then only packets from that avatar are logged", 242 + "If an avatar name is given then only packets from that avatar are logged",
243 Debug); 243 Debug);
244 244
245 m_console.Commands.AddCommand("region", false, "debug http",
246 "debug http <level>",
247 "Turn on inbound http request debugging for everything except the event queue (see debug eq).",
248 "If level >= 2 then the handler used to service the request is logged.\n"
249 + "If level >= 1 then incoming HTTP requests are logged.\n"
250 + "If level <= 0 then no extra http logging is done.\n",
251 Debug);
252
245 m_console.Commands.AddCommand("region", false, "debug scene", 253 m_console.Commands.AddCommand("region", false, "debug scene",
246 "debug scene <cripting> <collisions> <physics>", 254 "debug scene <cripting> <collisions> <physics>",
247 "Turn on scene debugging", Debug); 255 "Turn on scene debugging", Debug);
@@ -337,7 +345,7 @@ namespace OpenSim
337 345
338 m_console.Commands.AddCommand("region", false, "backup", 346 m_console.Commands.AddCommand("region", false, "backup",
339 "backup", 347 "backup",
340 "Persist objects to the database now", RunCommand); 348 "Persist currently unsaved object changes immediately instead of waiting for the normal persistence call.", RunCommand);
341 349
342 m_console.Commands.AddCommand("region", false, "create region", 350 m_console.Commands.AddCommand("region", false, "create region",
343 "create region [\"region name\"] <region_file.ini>", 351 "create region [\"region name\"] <region_file.ini>",
@@ -886,13 +894,30 @@ namespace OpenSim
886 if (int.TryParse(args[2], out newDebug)) 894 if (int.TryParse(args[2], out newDebug))
887 { 895 {
888 m_sceneManager.SetDebugPacketLevelOnCurrentScene(newDebug, name); 896 m_sceneManager.SetDebugPacketLevelOnCurrentScene(newDebug, name);
897 // We provide user information elsewhere if any clients had their debug level set.
898// MainConsole.Instance.OutputFormat("Debug packet level set to {0}", newDebug);
889 } 899 }
890 else 900 else
891 { 901 {
892 MainConsole.Instance.Output("packet debug should be 0..255"); 902 MainConsole.Instance.Output("Usage: debug packet 0..255");
903 }
904 }
905
906 break;
907
908 case "http":
909 if (args.Length == 3)
910 {
911 int newDebug;
912 if (int.TryParse(args[2], out newDebug))
913 {
914 MainServer.Instance.DebugLevel = newDebug;
915 MainConsole.Instance.OutputFormat("Debug http level set to {0}", newDebug);
916 break;
893 } 917 }
894 } 918 }
895 919
920 MainConsole.Instance.Output("Usage: debug http 0..2");
896 break; 921 break;
897 922
898 case "scene": 923 case "scene":
@@ -917,13 +942,13 @@ namespace OpenSim
917 } 942 }
918 else 943 else
919 { 944 {
920 MainConsole.Instance.Output("debug scene <scripting> <collisions> <physics> (where inside <> is true/false)"); 945 MainConsole.Instance.Output("Usage: debug scene <scripting> <collisions> <physics> (where inside <> is true/false)");
921 } 946 }
922 947
923 break; 948 break;
924 949
925 default: 950 default:
926 MainConsole.Instance.Output("Unknown debug"); 951 MainConsole.Instance.Output("Unknown debug command");
927 break; 952 break;
928 } 953 }
929 } 954 }
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
index 8f0ae76..07b4df3 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
@@ -238,7 +238,8 @@ namespace OpenSim.Region.ClientStack.Linden
238 return string.Empty; 238 return string.Empty;
239 } 239 }
240 240
241 Hashtable caps = m_HostCapsObj.CapsHandlers.CapsDetails; 241 Hashtable caps = m_HostCapsObj.CapsHandlers.GetCapsDetails(true);
242
242 // Add the external too 243 // Add the external too
243 foreach (KeyValuePair<string, string> kvp in m_HostCapsObj.ExternalCapsHandlers) 244 foreach (KeyValuePair<string, string> kvp in m_HostCapsObj.ExternalCapsHandlers)
244 caps[kvp.Key] = kvp.Value; 245 caps[kvp.Key] = kvp.Value;
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs
index 5c721d4..9f27abc 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs
@@ -110,8 +110,9 @@ namespace OpenSim.Region.ClientStack.Linden
110 false, 110 false,
111 "debug eq", 111 "debug eq",
112 "debug eq [0|1]", 112 "debug eq [0|1]",
113 "Turn on event queue debugging",
113 "debug eq 1 will turn on event queue debugging. This will log all outgoing event queue messages to clients.\n" 114 "debug eq 1 will turn on event queue debugging. This will log all outgoing event queue messages to clients.\n"
114 + "debug eq 1 will turn off event queue debugging.", 115 + "debug eq 0 will turn off event queue debugging.",
115 HandleDebugEq); 116 HandleDebugEq);
116 } 117 }
117 else 118 else
diff --git a/OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs b/OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs
index babeaab..97cd738 100644
--- a/OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs
@@ -29,6 +29,7 @@ using System;
29using System.Collections; 29using System.Collections;
30using System.Collections.Generic; 30using System.Collections.Generic;
31using System.Reflection; 31using System.Reflection;
32using System.Text;
32using log4net; 33using log4net;
33using Nini.Config; 34using Nini.Config;
34using Mono.Addins; 35using Mono.Addins;
@@ -46,6 +47,8 @@ namespace OpenSim.Region.CoreModules.Framework
46 public class CapabilitiesModule : INonSharedRegionModule, ICapabilitiesModule 47 public class CapabilitiesModule : INonSharedRegionModule, ICapabilitiesModule
47 { 48 {
48 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 49 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
50
51 private string m_showCapsCommandFormat = " {0,-38} {1,-60}\n";
49 52
50 protected Scene m_scene; 53 protected Scene m_scene;
51 54
@@ -68,7 +71,7 @@ namespace OpenSim.Region.CoreModules.Framework
68 m_scene.RegisterModuleInterface<ICapabilitiesModule>(this); 71 m_scene.RegisterModuleInterface<ICapabilitiesModule>(this);
69 MainConsole.Instance.Commands.AddCommand("Capabilities", false, "show caps", 72 MainConsole.Instance.Commands.AddCommand("Capabilities", false, "show caps",
70 "show caps", 73 "show caps",
71 "Shows all registered capabilities", CapabilitiesCommand); 74 "Shows all registered capabilities", HandleShowCapsCommand);
72 } 75 }
73 76
74 public void RegionLoaded(Scene scene) 77 public void RegionLoaded(Scene scene)
@@ -228,21 +231,23 @@ namespace OpenSim.Region.CoreModules.Framework
228 } 231 }
229 } 232 }
230 233
231 private void CapabilitiesCommand(string module, string[] cmdparams) 234 private void HandleShowCapsCommand(string module, string[] cmdparams)
232 { 235 {
233 System.Text.StringBuilder caps = new System.Text.StringBuilder(); 236 StringBuilder caps = new StringBuilder();
234 caps.AppendFormat("Region {0}:\n", m_scene.RegionInfo.RegionName); 237 caps.AppendFormat("Region {0}:\n", m_scene.RegionInfo.RegionName);
235 238
236 foreach (KeyValuePair<UUID, Caps> kvp in m_capsObjects) 239 foreach (KeyValuePair<UUID, Caps> kvp in m_capsObjects)
237 { 240 {
238 caps.AppendFormat("** User {0}:\n", kvp.Key); 241 caps.AppendFormat("** User {0}:\n", kvp.Key);
239 for (IDictionaryEnumerator kvp2 = kvp.Value.CapsHandlers.CapsDetails.GetEnumerator(); kvp2.MoveNext(); ) 242
243 for (IDictionaryEnumerator kvp2 = kvp.Value.CapsHandlers.GetCapsDetails(false).GetEnumerator(); kvp2.MoveNext(); )
240 { 244 {
241 Uri uri = new Uri(kvp2.Value.ToString()); 245 Uri uri = new Uri(kvp2.Value.ToString());
242 caps.AppendFormat(" {0} = {1}\n", kvp2.Key, uri.PathAndQuery); 246 caps.AppendFormat(m_showCapsCommandFormat, kvp2.Key, uri.PathAndQuery);
243 } 247 }
248
244 foreach (KeyValuePair<string, string> kvp3 in kvp.Value.ExternalCapsHandlers) 249 foreach (KeyValuePair<string, string> kvp3 in kvp.Value.ExternalCapsHandlers)
245 caps.AppendFormat(" {0} = {1}\n", kvp3.Key, kvp3.Value); 250 caps.AppendFormat(m_showCapsCommandFormat, kvp3.Key, kvp3.Value);
246 } 251 }
247 252
248 MainConsole.Instance.Output(caps.ToString()); 253 MainConsole.Instance.Output(caps.ToString());
diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
index 3963474..c1b8764 100644
--- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
+++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
@@ -218,9 +218,8 @@ namespace OpenSim.Region.CoreModules.World.Permissions
218 218
219 m_scene.AddCommand(this, "debug permissions", 219 m_scene.AddCommand(this, "debug permissions",
220 "debug permissions <true / false>", 220 "debug permissions <true / false>",
221 "Enable permissions debugging", 221 "Turn on permissions debugging",
222 HandleDebugPermissions); 222 HandleDebugPermissions);
223
224 223
225 string grant = myConfig.GetString("GrantLSL",""); 224 string grant = myConfig.GetString("GrantLSL","");
226 if (grant.Length > 0) { 225 if (grant.Length > 0) {
diff --git a/OpenSim/Region/Physics/Meshing/Meshmerizer.cs b/OpenSim/Region/Physics/Meshing/Meshmerizer.cs
index 53d5e4c..f15e81b 100644
--- a/OpenSim/Region/Physics/Meshing/Meshmerizer.cs
+++ b/OpenSim/Region/Physics/Meshing/Meshmerizer.cs
@@ -171,16 +171,13 @@ namespace OpenSim.Region.Physics.Meshing
171 171
172 foreach (Vector3 v in meshIn.getVertexList()) 172 foreach (Vector3 v in meshIn.getVertexList())
173 { 173 {
174 if (v != null) 174 if (v.X < minX) minX = v.X;
175 { 175 if (v.Y < minY) minY = v.Y;
176 if (v.X < minX) minX = v.X; 176 if (v.Z < minZ) minZ = v.Z;
177 if (v.Y < minY) minY = v.Y;
178 if (v.Z < minZ) minZ = v.Z;
179 177
180 if (v.X > maxX) maxX = v.X; 178 if (v.X > maxX) maxX = v.X;
181 if (v.Y > maxY) maxY = v.Y; 179 if (v.Y > maxY) maxY = v.Y;
182 if (v.Z > maxZ) maxZ = v.Z; 180 if (v.Z > maxZ) maxZ = v.Z;
183 }
184 } 181 }
185 182
186 return CreateSimpleBoxMesh(minX, maxX, minY, maxY, minZ, maxZ); 183 return CreateSimpleBoxMesh(minX, maxX, minY, maxY, minZ, maxZ);