From b6cfe15c7c0b3697709179cbbf32818576919642 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Sat, 24 Dec 2011 07:44:26 -0800
Subject: HG: more / love for Xmas
---
OpenSim/Region/ClientStack/Linden/UDP/J2KImage.cs | 7 ++++--
.../Connectors/Asset/HGAssetServiceConnector.cs | 21 +++++++++++++++--
.../Connectors/Hypergrid/HeloServiceConnector.cs | 27 ++++++++++++++++++++--
prebuild.xml | 1 +
4 files changed, 50 insertions(+), 6 deletions(-)
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/J2KImage.cs b/OpenSim/Region/ClientStack/Linden/UDP/J2KImage.cs
index e9e2dca..1dea87e 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/J2KImage.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/J2KImage.cs
@@ -385,8 +385,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
string assetServerURL = string.Empty;
if (InventoryAccessModule.IsForeignUser(AgentID, out assetServerURL))
{
- m_log.DebugFormat("[J2KIMAGE]: texture {0} not found in local asset storage. Trying user's storage.", id);
- AssetService.Get(assetServerURL + "/" + id, InventoryAccessModule, AssetReceived);
+ if (!assetServerURL.EndsWith("/") && !assetServerURL.EndsWith("="))
+ assetServerURL = assetServerURL + "/";
+
+ m_log.DebugFormat("[J2KIMAGE]: texture {0} not found in local asset storage. Trying user's storage.", assetServerURL + id);
+ AssetService.Get(assetServerURL + id, InventoryAccessModule, AssetReceived);
return;
}
}
diff --git a/OpenSim/Services/Connectors/Asset/HGAssetServiceConnector.cs b/OpenSim/Services/Connectors/Asset/HGAssetServiceConnector.cs
index 5c31639..bb5d51f 100644
--- a/OpenSim/Services/Connectors/Asset/HGAssetServiceConnector.cs
+++ b/OpenSim/Services/Connectors/Asset/HGAssetServiceConnector.cs
@@ -29,7 +29,9 @@ using log4net;
using Nini.Config;
using System;
using System.Collections.Generic;
+using System.Collections.Specialized;
using System.Reflection;
+using System.Web;
using OpenSim.Framework;
using OpenSim.Services.Interfaces;
using OpenSim.Services.Connectors.Hypergrid;
@@ -73,11 +75,26 @@ namespace OpenSim.Services.Connectors
if (Uri.TryCreate(id, UriKind.Absolute, out assetUri) &&
assetUri.Scheme == Uri.UriSchemeHttp)
{
- url = "http://" + assetUri.Authority;
- assetID = assetUri.LocalPath.Trim(new char[] {'/'});
+ // Simian
+ if (assetUri.Query != string.Empty)
+ {
+ NameValueCollection qscoll = HttpUtility.ParseQueryString(assetUri.Query);
+ assetID = qscoll["id"];
+ if (assetID != null)
+ url = id.Replace(assetID, ""); // Malformed again, as simian expects
+ else
+ url = id; // !!! best effort
+ }
+ else // robust
+ {
+ url = "http://" + assetUri.Authority;
+ assetID = assetUri.LocalPath.Trim(new char[] { '/' });
+ }
+
return true;
}
+ m_log.DebugFormat("[HG ASSET SERVICE]: Malformed URL {0}", id);
return false;
}
diff --git a/OpenSim/Services/Connectors/Hypergrid/HeloServiceConnector.cs b/OpenSim/Services/Connectors/Hypergrid/HeloServiceConnector.cs
index ff1dd5f..8ac89cc 100644
--- a/OpenSim/Services/Connectors/Hypergrid/HeloServiceConnector.cs
+++ b/OpenSim/Services/Connectors/Hypergrid/HeloServiceConnector.cs
@@ -47,13 +47,36 @@ namespace OpenSim.Services.Connectors
public HeloServicesConnector(string serverURI)
{
- m_ServerURI = serverURI.TrimEnd('/');
+ if (!serverURI.EndsWith("="))
+ m_ServerURI = serverURI.TrimEnd('/') + "/helo/";
+ else
+ {
+ // Simian sends malformed urls like this:
+ // http://valley.virtualportland.org/simtest/Grid/?id=
+ //
+ try
+ {
+ Uri uri = new Uri(serverURI + "xxx");
+ if (uri.Query == string.Empty)
+ m_ServerURI = serverURI.TrimEnd('/') + "/helo/";
+ else
+ {
+ serverURI = serverURI + "xxx";
+ m_ServerURI = serverURI.Replace("?" + uri.Query, "");
+ m_ServerURI = m_ServerURI.TrimEnd('/') + "/helo/";
+ }
+ }
+ catch (UriFormatException e)
+ {
+ m_log.WarnFormat("[HELO SERVICE]: Malformed URL {0}", serverURI);
+ }
+ }
}
public virtual string Helo()
{
- HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(m_ServerURI + "/helo/");
+ HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(m_ServerURI);
// Eventually we need to switch to HEAD
/* req.Method = "HEAD"; */
diff --git a/prebuild.xml b/prebuild.xml
index e951187..4ea4708 100644
--- a/prebuild.xml
+++ b/prebuild.xml
@@ -926,6 +926,7 @@
../../../bin/
+
--
cgit v1.1