aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs69
1 files changed, 34 insertions, 35 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs
index cbf32ad..04615a9 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs
@@ -118,45 +118,44 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
118 if (string.IsNullOrEmpty(url)) 118 if (string.IsNullOrEmpty(url))
119 return false; 119 return false;
120 120
121 if (asset != null) 121 if (!url.EndsWith("/") && !url.EndsWith("="))
122 { 122 url = url + "/";
123 if (!url.EndsWith("/") && !url.EndsWith("="))
124 url = url + "/";
125
126 bool success = true;
127 // See long comment in AssetCache.AddAsset
128 if (!asset.Temporary || asset.Local)
129 {
130 // We need to copy the asset into a new asset, because
131 // we need to set its ID to be URL+UUID, so that the
132 // HGAssetService dispatches it to the remote grid.
133 // It's not pretty, but the best that can be done while
134 // not having a global naming infrastructure
135 AssetBase asset1 = new AssetBase(asset.FullID, asset.Name, asset.Type, asset.Metadata.CreatorID);
136 Copy(asset, asset1);
137 asset1.ID = url + asset.ID;
138
139 AdjustIdentifiers(asset1.Metadata);
140 if (asset1.Metadata.Type == (sbyte)AssetType.Object)
141 asset1.Data = AdjustIdentifiers(asset.Data);
142 else
143 asset1.Data = asset.Data;
144 123
145 string id = m_scene.AssetService.Store(asset1); 124 if (asset == null)
146 if (String.IsNullOrEmpty(id)) 125 {
147 { 126 m_log.Warn("[HG ASSET MAPPER]: Tried to post asset to remote server, but asset not in local cache.");
148 m_log.DebugFormat("[HG ASSET MAPPER]: Failed to post asset {0} to asset server {1}: the server did not accept the asset", asset.ID, url); 127 return false;
149 success = false;
150 }
151 else
152 m_log.DebugFormat("[HG ASSET MAPPER]: Posted asset {0} to asset server {1}", asset1.ID, url);
153 }
154 return success;
155 } 128 }
129
130 // See long comment in AssetCache.AddAsset
131 if (asset.Temporary || asset.Local)
132 return true;
133
134 // We need to copy the asset into a new asset, because
135 // we need to set its ID to be URL+UUID, so that the
136 // HGAssetService dispatches it to the remote grid.
137 // It's not pretty, but the best that can be done while
138 // not having a global naming infrastructure
139 AssetBase asset1 = new AssetBase(asset.FullID, asset.Name, asset.Type, asset.Metadata.CreatorID);
140 Copy(asset, asset1);
141 asset1.ID = url + asset.ID;
142
143 AdjustIdentifiers(asset1.Metadata);
144 if (asset1.Metadata.Type == (sbyte)AssetType.Object)
145 asset1.Data = AdjustIdentifiers(asset.Data);
156 else 146 else
157 m_log.Warn("[HG ASSET MAPPER]: Tried to post asset to remote server, but asset not in local cache."); 147 asset1.Data = asset.Data;
158 148
159 return false; 149 string id = m_scene.AssetService.Store(asset1);
150 if (String.IsNullOrEmpty(id))
151 {
152 m_log.DebugFormat("[HG ASSET MAPPER]: Asset server {0} did not accept {1}", url, asset.ID);
153 return false;
154 }
155 else {
156 m_log.DebugFormat("[HG ASSET MAPPER]: Posted copy of asset {0} from local asset server to {1}", asset1.ID, url);
157 return true;
158 }
160 } 159 }
161 160
162 private void Copy(AssetBase from, AssetBase to) 161 private void Copy(AssetBase from, AssetBase to)