diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index bcfb633481..c6ce1b6470 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -673,8 +673,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
             catch (Exception e)
             {
                 // Make sure that we see any exception caused by the asynchronous operation.
-                m_log.Error(
-                    string.Format("[LLCLIENTVIEW]: Caught exception while processing {0}", packetObject.Pack), e);
+                m_log.ErrorFormat(
+                    "[LLCLIENTVIEW]: Caught exception while processing {0} for {1}, {2} {3}", 
+                    packetObject.Pack, Name, e.Message, e.StackTrace);
             }
         }
 
diff --git a/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs b/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs
index 8df645dd32..abd28c87a9 100644
--- a/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs
+++ b/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs
@@ -97,7 +97,6 @@ namespace OpenSim.Region.CoreModules.World.Sound
                 else
                     gain = (float)((double)gain * ((radius - dis) / radius));
 
-                m_log.DebugFormat("Play sound, gain {0}", gain);
                 sp.ControllingClient.SendPlayAttachedSound(soundID, objectID, ownerID, (float)gain, flags);
             });
         }
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index c4639c3716..3ae8a3853a 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -3270,6 +3270,9 @@ namespace OpenSim.Region.Framework.Scenes
                 m_eventManager.TriggerOnRemovePresence(agentID);
                 m_log.Debug("[Scene] Finished OnRemovePresence");
 
+                if (avatar != null && (!avatar.IsChildAgent))
+                    avatar.SaveChangedAttachments();
+
                 if (avatar != null && (!avatar.IsChildAgent))
                     avatar.SaveChangedAttachments();
 
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index c6023071e5..254ed0f1db 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -10493,6 +10493,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                     case "4":
                         ret = ret + new LSL_List(land.Area);
                         break;
+                    case "5":
+                        ret = ret + new LSL_List(land.GlobalID);
+                        break;
                     default:
                         ret = ret + new LSL_List(0);
                         break;
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index 5212e1b245..7ce3716266 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -648,6 +648,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
             //
             CheckThreatLevel(ThreatLevel.High, "osTeleportAgent");
 
+            TeleportAgent(agent, regionName, position, lookat);
+        }
+
+        private void TeleportAgent(string agent, string regionName, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat)
+        {
             m_host.AddScriptLPS(1);
             UUID agentId = new UUID();
             if (UUID.TryParse(agent, out agentId))
@@ -660,7 +665,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                         == World.LandChannel.GetLandObject(
                             presence.AbsolutePosition.X, presence.AbsolutePosition.Y).LandData.OwnerID)
                     {
-
                         // Check for hostname , attempt to make a hglink
                         // and convert the regionName to the target region
                         if (regionName.Contains(".") && regionName.Contains(":"))
@@ -670,7 +674,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                             if (regions != null && regions.Count > 0)
                             {
                                 GridRegion regInfo = regions[0];
-                                regionName = regInfo.RegionName;
+                                string[] parts = regInfo.RegionName.Split(new char[] { ':' });
+                                if (parts.Length > 2)
+                                    regionName = parts[2];
+                                else
+                                    regionName = parts[0];
                             }
                         }
                         World.RequestTeleportLocation(presence.ControllingClient, regionName,
@@ -683,13 +691,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
             }
         }
 
-        // Teleport functions
         public void osTeleportAgent(string agent, int regionX, int regionY, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat)
         {
             // High because there is no security check. High griefer potential
             //
             CheckThreatLevel(ThreatLevel.High, "osTeleportAgent");
 
+            TeleportAgent(agent, regionX, regionY, position, lookat);
+        }
+
+        private void TeleportAgent(string agent, int regionX, int regionY, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat)
+        {
             ulong regionHandle = Util.UIntsToLong(((uint)regionX * (uint)Constants.RegionSize), ((uint)regionY * (uint)Constants.RegionSize));
 
             m_host.AddScriptLPS(1);
@@ -718,6 +730,26 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
             osTeleportAgent(agent, World.RegionInfo.RegionName, position, lookat);
         }
 
+        public void osTeleportOwner(string regionName, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat)
+        {
+            // Threat level None because this is what can already be done with the World Map in the viewer
+            CheckThreatLevel(ThreatLevel.None, "osTeleportOwner");
+
+            TeleportAgent(m_host.OwnerID.ToString(), regionName, position, lookat);
+        }
+
+        public void osTeleportOwner(LSL_Types.Vector3 position, LSL_Types.Vector3 lookat)
+        {
+            osTeleportOwner(World.RegionInfo.RegionName, position, lookat);
+        }
+
+        public void osTeleportOwner(int regionX, int regionY, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat)
+        {
+            CheckThreatLevel(ThreatLevel.None, "osTeleportOwner");
+
+            TeleportAgent(m_host.OwnerID.ToString(), regionX, regionY, position, lookat);
+        }
+
         // Functions that get information from the agent itself.
         //
         // osGetAgentIP - this is used to determine the IP address of
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
index fbf601af7b..028bb42b08 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
@@ -86,6 +86,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
         void osTeleportAgent(string agent, string regionName, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat);
         void osTeleportAgent(string agent, int regionX, int regionY, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat);
         void osTeleportAgent(string agent, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat);
+        void osTeleportOwner(string regionName, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat);
+        void osTeleportOwner(int regionX, int regionY, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat);
+        void osTeleportOwner(LSL_Types.Vector3 position, LSL_Types.Vector3 lookat);
 
         // Animation commands
         void osAvatarPlayAnimation(string avatar, string animation);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
index 034228343f..93d544b5cf 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
@@ -508,6 +508,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
         public const int PARCEL_DETAILS_OWNER = 2;
         public const int PARCEL_DETAILS_GROUP = 3;
         public const int PARCEL_DETAILS_AREA = 4;
+        public const int PARCEL_DETAILS_ID = 5;
 
         // constants for llSetClickAction
         public const int CLICK_ACTION_NONE = 0;
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
index e289554dfc..370bf1d4e6 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
@@ -227,6 +227,21 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
             m_OSSL_Functions.osTeleportAgent(agent, position, lookat);
         }
 
+        public void osTeleportOwner(string regionName, vector position, vector lookat)
+        {
+            m_OSSL_Functions.osTeleportOwner(regionName, position, lookat);
+        }
+
+        public void osTeleportOwner(int regionX, int regionY, vector position, vector lookat)
+        {
+            m_OSSL_Functions.osTeleportOwner(regionX, regionY, position, lookat);
+        }
+
+        public void osTeleportOwner(vector position, vector lookat)
+        {
+            m_OSSL_Functions.osTeleportOwner(position, lookat);
+        }
+
         // Avatar info functions
         public string osGetAgentIP(string agent)
         {
diff --git a/bin/config-include/storage/SQLiteLegacyStandalone.ini b/bin/config-include/storage/SQLiteLegacyStandalone.ini
index facbbd6bcd..ffe9a70ca8 100644
--- a/bin/config-include/storage/SQLiteLegacyStandalone.ini
+++ b/bin/config-include/storage/SQLiteLegacyStandalone.ini
@@ -4,6 +4,9 @@
     StorageProvider = "OpenSim.Data.SQLiteLegacy.dll"
     ConnectionString = "URI=file:OpenSim.db,version=3,UseUTF16Encoding=True"
 
+[AssetService]
+    ConnectionString = "URI=file:Asset.db,version=3"
+
 [AvatarService]
     ConnectionString = "URI=file:avatars.db,version=3"
 
diff --git a/bin/config-include/storage/SQLiteStandalone.ini b/bin/config-include/storage/SQLiteStandalone.ini
index 10e6991954..c1de71aa21 100644
--- a/bin/config-include/storage/SQLiteStandalone.ini
+++ b/bin/config-include/storage/SQLiteStandalone.ini
@@ -4,6 +4,9 @@
     StorageProvider = "OpenSim.Data.SQLite.dll"
     ConnectionString = "URI=file:OpenSim.db,version=3,UseUTF16Encoding=True"
 
+[AssetService]
+    ConnectionString = "URI=file:Asset.db,version=3"
+
 [InventoryService]
     ;ConnectionString = "URI=file:inventory.db,version=3"
     ; if you have a legacy inventory store use the connection string below
diff --git a/prebuild.xml b/prebuild.xml
index c3a58f4383..f963bb4052 100644
--- a/prebuild.xml
+++ b/prebuild.xml
@@ -2185,7 +2185,7 @@
       
       
       
-      
+      
       
       
 
@@ -2534,7 +2534,7 @@
       
       
       
-      
+