diff options
-rw-r--r-- | OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs | 69 |
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) |