aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
diff options
context:
space:
mode:
authorMelanie2013-01-23 19:31:27 +0000
committerMelanie2013-01-23 19:31:27 +0000
commitfc1c77b42d6e35ecb6ad371484f355a3430018b1 (patch)
treee3c5fed0229a21902aa85a80b587e98fe397ac6c /OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
parentMerge branch 'master' into careminster (diff)
parentRemove the return value from llGiveMoney (it was a LSL extension of OpenSim) and (diff)
downloadopensim-SC_OLD-fc1c77b42d6e35ecb6ad371484f355a3430018b1.zip
opensim-SC_OLD-fc1c77b42d6e35ecb6ad371484f355a3430018b1.tar.gz
opensim-SC_OLD-fc1c77b42d6e35ecb6ad371484f355a3430018b1.tar.bz2
opensim-SC_OLD-fc1c77b42d6e35ecb6ad371484f355a3430018b1.tar.xz
Merge branch 'avination' into careminster
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs46
1 files changed, 35 insertions, 11 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index d6ce069..10ec34d 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -1857,17 +1857,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
1857 { 1857 {
1858 UUID assetID = UUID.Zero; 1858 UUID assetID = UUID.Zero;
1859 1859
1860 if (!UUID.TryParse(notecardNameOrUuid, out assetID)) 1860 bool notecardNameIsUUID = UUID.TryParse(notecardNameOrUuid, out assetID);
1861
1862 if (!notecardNameIsUUID)
1861 { 1863 {
1862 m_host.TaskInventory.LockItemsForRead(true); 1864 assetID = SearchTaskInventoryForAssetId(notecardNameOrUuid);
1863 foreach (TaskInventoryItem item in m_host.TaskInventory.Values)
1864 {
1865 if (item.Type == 7 && item.Name == notecardNameOrUuid)
1866 {
1867 assetID = item.AssetID;
1868 }
1869 }
1870 m_host.TaskInventory.LockItemsForRead(false);
1871 } 1865 }
1872 1866
1873 if (assetID == UUID.Zero) 1867 if (assetID == UUID.Zero)
@@ -1878,7 +1872,23 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
1878 AssetBase a = World.AssetService.Get(assetID.ToString()); 1872 AssetBase a = World.AssetService.Get(assetID.ToString());
1879 1873
1880 if (a == null) 1874 if (a == null)
1881 return UUID.Zero; 1875 {
1876 // Whoops, it's still possible here that the notecard name was properly
1877 // formatted like a UUID but isn't an asset UUID so lets look it up by name after all
1878 assetID = SearchTaskInventoryForAssetId(notecardNameOrUuid);
1879 if (assetID == UUID.Zero)
1880 return UUID.Zero;
1881
1882 if (!NotecardCache.IsCached(assetID))
1883 {
1884 a = World.AssetService.Get(assetID.ToString());
1885
1886 if (a == null)
1887 {
1888 return UUID.Zero;
1889 }
1890 }
1891 }
1882 1892
1883 string data = Encoding.UTF8.GetString(a.Data); 1893 string data = Encoding.UTF8.GetString(a.Data);
1884 NotecardCache.Cache(assetID, data); 1894 NotecardCache.Cache(assetID, data);
@@ -1886,6 +1896,20 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
1886 1896
1887 return assetID; 1897 return assetID;
1888 } 1898 }
1899 protected UUID SearchTaskInventoryForAssetId(string name)
1900 {
1901 UUID assetId = UUID.Zero;
1902 m_host.TaskInventory.LockItemsForRead(true);
1903 foreach (TaskInventoryItem item in m_host.TaskInventory.Values)
1904 {
1905 if (item.Type == 7 && item.Name == name)
1906 {
1907 assetId = item.AssetID;
1908 }
1909 }
1910 m_host.TaskInventory.LockItemsForRead(false);
1911 return assetId;
1912 }
1889 1913
1890 /// <summary> 1914 /// <summary>
1891 /// Directly get an entire notecard at once. 1915 /// Directly get an entire notecard at once.