private void NewFileAgentInventoryVariablePriceUploadHandler(NewFileAgentInventoryVariablePriceMessage message, Capability cap, IHttpClientContext context, IHttpRequest request, IHttpResponse response) { byte[] assetData = request.GetBody(); UUID assetID = UUID.Zero; LLInventoryItem item = null; m_log.Debug("Received inventory asset upload from " + cap.OwnerID + " (" + assetData.Length + " bytes)"); if (assetData != null && assetData.Length > 0) { string contentType = LLUtil.LLAssetTypeToContentType((int)message.AssetType); // Create the asset if (m_assetClient.StoreAsset(contentType, false, false, assetData, cap.OwnerID, out assetID)) { // Create the inventory item item = new LLInventoryItem(); item.AssetID = assetID; item.ContentType = contentType; item.CreationDate = DateTime.UtcNow; item.CreatorID = cap.OwnerID; item.Description = message.Description; item.ID = UUID.Random(); item.Name = message.Name; item.OwnerID = cap.OwnerID; item.ParentID = message.FolderID; Permissions perms = (m_permissions != null) ? m_permissions.GetDefaultPermissions() : Permissions.FullPermissions; perms.EveryoneMask = message.EveryoneMask; perms.GroupMask = message.GroupMask; perms.NextOwnerMask = message.NextOwnerMask; item.Permissions = perms; item.SalePrice = 10; item.SaleType = SaleType.Not; if (!m_inventoryClient.TryCreateItem(cap.OwnerID, item)) m_log.Warn("Failed to create inventory item for uploaded asset " + assetID); } else { m_log.WarnFormat("Failed to store uploaded inventory asset ({0} bytes)", assetData.Length); } } else { m_log.Warn("Inventory asset upload contained no data"); } // Build the response message NewFileAgentInventoryUploadReplyMessage reply = new NewFileAgentInventoryUploadReplyMessage(); reply.NewAsset = assetID; if (item != null) { reply.NewInventoryItem = item.ID; reply.NewBaseMask = item.Permissions.BaseMask; reply.NewEveryoneMask = item.Permissions.EveryoneMask; reply.NewNextOwnerMask = item.Permissions.NextOwnerMask; reply.NewOwnerMask = item.Permissions.OwnerMask; } LLUtil.SendLLSDXMLResponse(response, reply.Serialize()); }