Merge branch 'master' into careminster

avinationmerge
Melanie 2009-12-20 16:45:28 +00:00
commit 3d3e0ea4f3
10 changed files with 102 additions and 239 deletions

View File

@ -253,60 +253,66 @@ namespace OpenSim.Framework.Servers.HttpServer
private void OnRequest(object source, RequestEventArgs args)
{
IHttpClientContext context = (IHttpClientContext)source;
IHttpRequest request = args.Request;
PollServiceEventArgs psEvArgs;
if (TryGetPollServiceHTTPHandler(request.UriPath.ToString(), out psEvArgs))
try
{
PollServiceHttpRequest psreq = new PollServiceHttpRequest(psEvArgs, context, request);
if (psEvArgs.Request != null)
IHttpClientContext context = (IHttpClientContext)source;
IHttpRequest request = args.Request;
PollServiceEventArgs psEvArgs;
if (TryGetPollServiceHTTPHandler(request.UriPath.ToString(), out psEvArgs))
{
OSHttpRequest req = new OSHttpRequest(context, request);
Stream requestStream = req.InputStream;
Encoding encoding = Encoding.UTF8;
StreamReader reader = new StreamReader(requestStream, encoding);
string requestBody = reader.ReadToEnd();
Hashtable keysvals = new Hashtable();
Hashtable headervals = new Hashtable();
string[] querystringkeys = req.QueryString.AllKeys;
string[] rHeaders = req.Headers.AllKeys;
keysvals.Add("body", requestBody);
keysvals.Add("uri", req.RawUrl);
keysvals.Add("content-type", req.ContentType);
keysvals.Add("http-method", req.HttpMethod);
foreach (string queryname in querystringkeys)
PollServiceHttpRequest psreq = new PollServiceHttpRequest(psEvArgs, context, request);
if (psEvArgs.Request != null)
{
keysvals.Add(queryname, req.QueryString[queryname]);
OSHttpRequest req = new OSHttpRequest(context, request);
Stream requestStream = req.InputStream;
Encoding encoding = Encoding.UTF8;
StreamReader reader = new StreamReader(requestStream, encoding);
string requestBody = reader.ReadToEnd();
Hashtable keysvals = new Hashtable();
Hashtable headervals = new Hashtable();
string[] querystringkeys = req.QueryString.AllKeys;
string[] rHeaders = req.Headers.AllKeys;
keysvals.Add("body", requestBody);
keysvals.Add("uri", req.RawUrl);
keysvals.Add("content-type", req.ContentType);
keysvals.Add("http-method", req.HttpMethod);
foreach (string queryname in querystringkeys)
{
keysvals.Add(queryname, req.QueryString[queryname]);
}
foreach (string headername in rHeaders)
{
headervals[headername] = req.Headers[headername];
}
keysvals.Add("headers",headervals);
keysvals.Add("querystringkeys", querystringkeys);
psEvArgs.Request(psreq.RequestID, keysvals);
}
foreach (string headername in rHeaders)
{
headervals[headername] = req.Headers[headername];
}
keysvals.Add("headers",headervals);
keysvals.Add("querystringkeys", querystringkeys);
psEvArgs.Request(psreq.RequestID, keysvals);
m_PollServiceManager.Enqueue(psreq);
}
else
{
OnHandleRequestIOThread(context, request);
}
m_PollServiceManager.Enqueue(psreq);
}
else
catch (Exception e)
{
OnHandleRequestIOThread(context, request);
m_log.ErrorFormat("[BASE HTTP SERVER]: OnRequest() failed with {0} {1}", e.Message, e.StackTrace);
}
}
public void OnHandleRequestIOThread(IHttpClientContext context, IHttpRequest request)
@ -465,11 +471,11 @@ namespace OpenSim.Framework.Servers.HttpServer
catch (SocketException e)
{
// This has to be here to prevent a Linux/Mono crash
m_log.WarnFormat("[BASE HTTP SERVER] XmlRpcRequest issue {0}.\nNOTE: this may be spurious on Linux.", e);
m_log.WarnFormat("[BASE HTTP SERVER]: XmlRpcRequest issue {0}.\nNOTE: this may be spurious on Linux.", e);
}
catch (IOException e)
{
m_log.Warn("[BASE HTTP SERVER] XmlRpcRequest issue: " + e.Message);
m_log.Warn("[BASE HTTP SERVER]: XmlRpcRequest issue: " + e.Message);
}
return;
}
@ -548,7 +554,7 @@ namespace OpenSim.Framework.Servers.HttpServer
}
catch (IOException e)
{
m_log.ErrorFormat("[BASE HTTP SERVER] HandleRequest() threw ", e);
m_log.ErrorFormat("[BASE HTTP SERVER]: HandleRequest() threw ", e);
}
catch (InvalidOperationException e)
{
@ -763,7 +769,7 @@ namespace OpenSim.Framework.Servers.HttpServer
byte[] buf = Encoding.UTF8.GetBytes("Not found");
response.KeepAlive = false;
m_log.ErrorFormat("[BASE HTTP SERVER] Handler not found for http request {0}", request.RawUrl);
m_log.ErrorFormat("[BASE HTTP SERVER]: Handler not found for http request {0}", request.RawUrl);
response.SendChunked = false;
response.ContentLength64 = buf.Length;
@ -775,7 +781,7 @@ namespace OpenSim.Framework.Servers.HttpServer
}
catch (Exception ex)
{
m_log.Warn("[HTTPD]: Error - " + ex.Message);
m_log.Warn("[BASE HTTP SERVER]: Error - " + ex.Message);
}
finally
{
@ -787,11 +793,11 @@ namespace OpenSim.Framework.Servers.HttpServer
catch (SocketException e)
{
// This has to be here to prevent a Linux/Mono crash
m_log.WarnFormat("[BASE HTTP SERVER] XmlRpcRequest issue {0}.\nNOTE: this may be spurious on Linux.", e);
m_log.WarnFormat("[BASE HTTP SERVER]: XmlRpcRequest issue {0}.\nNOTE: this may be spurious on Linux.", e);
}
catch (IOException e)
{
m_log.Warn("[BASE HTTP SERVER] XmlRpcRequest issue: " + e.Message);
m_log.Warn("[BASE HTTP SERVER]: XmlRpcRequest issue: " + e.Message);
}
}
return;
@ -812,7 +818,7 @@ namespace OpenSim.Framework.Servers.HttpServer
}
catch (Exception ex)
{
m_log.Warn("[HTTPD]: Error - " + ex.Message);
m_log.Warn("[BASE HTTP SERVER]: Error - " + ex.Message);
}
finally
{
@ -824,11 +830,11 @@ namespace OpenSim.Framework.Servers.HttpServer
catch (SocketException e)
{
// This has to be here to prevent a Linux/Mono crash
m_log.WarnFormat("[BASE HTTP SERVER] XmlRpcRequest issue {0}.\nNOTE: this may be spurious on Linux.", e);
m_log.WarnFormat("[BASE HTTP SERVER]: XmlRpcRequest issue {0}.\nNOTE: this may be spurious on Linux.", e);
}
catch (IOException e)
{
m_log.Warn("[BASE HTTP SERVER] XmlRpcRequest issue: " + e.Message);
m_log.Warn("[BASE HTTP SERVER]: XmlRpcRequest issue: " + e.Message);
}
}
}
@ -864,7 +870,7 @@ namespace OpenSim.Framework.Servers.HttpServer
}
catch (Exception ex)
{
m_log.Warn("[HTTPD]: Error - " + ex.Message);
m_log.Warn("[BASE HTTP SERVER]: Error - " + ex.Message);
}
if (llsdRequest != null)// && m_defaultLlsdHandler != null)
@ -925,7 +931,7 @@ namespace OpenSim.Framework.Servers.HttpServer
}
catch (Exception ex)
{
m_log.Warn("[HTTPD]: Error - " + ex.Message);
m_log.Warn("[BASE HTTP SERVER]: Error - " + ex.Message);
}
finally
{
@ -939,12 +945,12 @@ namespace OpenSim.Framework.Servers.HttpServer
}
catch (IOException e)
{
m_log.DebugFormat("[BASE HTTP SERVER] LLSD IOException {0}.", e);
m_log.DebugFormat("[BASE HTTP SERVER]: LLSD IOException {0}.", e);
}
catch (SocketException e)
{
// This has to be here to prevent a Linux/Mono crash
m_log.WarnFormat("[BASE HTTP SERVER] LLSD issue {0}.\nNOTE: this may be spurious on Linux.", e);
m_log.WarnFormat("[BASE HTTP SERVER]: LLSD issue {0}.\nNOTE: this may be spurious on Linux.", e);
}
}
}
@ -1482,11 +1488,11 @@ namespace OpenSim.Framework.Servers.HttpServer
catch (SocketException e)
{
// This has to be here to prevent a Linux/Mono crash
m_log.WarnFormat("[BASE HTTP SERVER] XmlRpcRequest issue {0}.\nNOTE: this may be spurious on Linux.", e);
m_log.WarnFormat("[BASE HTTP SERVER]: XmlRpcRequest issue {0}.\nNOTE: this may be spurious on Linux.", e);
}
catch (IOException e)
{
m_log.Warn("[BASE HTTP SERVER] XmlRpcRequest issue: " + e.Message);
m_log.Warn("[BASE HTTP SERVER]: XmlRpcRequest issue: " + e.Message);
}
}
}
@ -1510,7 +1516,7 @@ namespace OpenSim.Framework.Servers.HttpServer
}
catch (Exception ex)
{
m_log.Warn("[HTTPD]: Error - " + ex.Message);
m_log.Warn("[BASE HTTP SERVER]: Error - " + ex.Message);
}
finally
{
@ -1523,7 +1529,7 @@ namespace OpenSim.Framework.Servers.HttpServer
catch (SocketException e)
{
// This has to be here to prevent a Linux/Mono crash
m_log.WarnFormat("[BASE HTTP SERVER] XmlRpcRequest issue {0}.\nNOTE: this may be spurious on Linux.", e);
m_log.WarnFormat("[BASE HTTP SERVER]: XmlRpcRequest issue {0}.\nNOTE: this may be spurious on Linux.", e);
}
}
}
@ -1546,7 +1552,7 @@ namespace OpenSim.Framework.Servers.HttpServer
}
catch (Exception ex)
{
m_log.Warn("[HTTPD]: Error - " + ex.Message);
m_log.Warn("[BASE HTTP SERVER]: Error - " + ex.Message);
}
finally
{
@ -1566,7 +1572,7 @@ namespace OpenSim.Framework.Servers.HttpServer
public void Start()
{
m_log.Info("[HTTPD]: Starting up HTTP Server");
m_log.Info("[BASE HTTP SERVER]: Starting up HTTP Server");
StartHTTP();
}
@ -1574,7 +1580,7 @@ namespace OpenSim.Framework.Servers.HttpServer
{
try
{
m_log.Info("[HTTPD]: Spawned main thread OK");
m_log.Debug("[BASE HTTP SERVER]: Spawned main thread OK");
//m_httpListener = new HttpListener();
NotSocketErrors = 0;
if (!m_ssl)
@ -1614,8 +1620,8 @@ namespace OpenSim.Framework.Servers.HttpServer
}
catch (Exception e)
{
m_log.Error("[HTTPD]: Error - " + e.Message);
m_log.Error("[HTTPD]: Tip: Do you have permission to listen on port " + m_port + ", " + m_sslport + "?");
m_log.Error("[BASE HTTP SERVER]: Error - " + e.Message);
m_log.Error("[BASE HTTP SERVER]: Tip: Do you have permission to listen on port " + m_port + ", " + m_sslport + "?");
// We want this exception to halt the entire server since in current configurations we aren't too
// useful without inbound HTTP.
@ -1636,7 +1642,7 @@ namespace OpenSim.Framework.Servers.HttpServer
public void httpServerException(object source, Exception exception)
{
m_log.ErrorFormat("[HTTPSERVER]: {0} had an exception {1}", source.ToString(), exception.ToString());
m_log.ErrorFormat("[BASE HTTP SERVER]: {0} had an exception {1}", source.ToString(), exception.ToString());
/*
if (HTTPDRunning)// && NotSocketErrors > 5)
{
@ -1662,7 +1668,7 @@ namespace OpenSim.Framework.Servers.HttpServer
}
catch (NullReferenceException)
{
m_log.Warn("[BASEHTTPSERVER]: Null Reference when stopping HttpServer.");
m_log.Warn("[BASE HTTP SERVER]: Null Reference when stopping HttpServer.");
}
}

View File

@ -405,6 +405,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
if (parts.Length >= 2)
{
portstr = parts[1];
//m_log.Debug("-- port = " + portstr);
if (!UInt32.TryParse(portstr, out port))
regionName = parts[1];
}
@ -620,8 +621,16 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
clonedRegion.RegionLocX = (int)x;
clonedRegion.RegionLocY = (int)y;
// Get the user's home region information
GridRegion home = m_aScene.GridService.GetRegionByUUID(m_aScene.RegionInfo.ScopeID, uinfo.UserProfile.HomeRegionID);
// Get the user's home region information and adapt the region handle
GridRegion home = GetRegionByUUID(m_aScene.RegionInfo.ScopeID, uinfo.UserProfile.HomeRegionID);
if (m_HyperlinkHandles.ContainsKey(uinfo.UserProfile.HomeRegionID))
{
ulong realHandle = m_HyperlinkHandles[uinfo.UserProfile.HomeRegionID];
Utils.LongToUInts(realHandle, out x, out y);
m_log.DebugFormat("[HGrid]: Foreign user is going elsewhere. Adjusting home handle from {0}-{1} to {2}-{3}", home.RegionLocX, home.RegionLocY, x, y);
home.RegionLocX = (int)x;
home.RegionLocY = (int)y;
}
// Get the user's service URLs
string serverURI = "";

View File

@ -157,7 +157,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion
}
// m_log.DebugFormat("[LOCAL COMMS]: Did not find region {0} for SendCreateChildAgent", regionHandle);
reason = "Did not find region.";
uint x = 0, y = 0;
Utils.LongToUInts(regionHandle, out x, out y);
reason = "Did not find region " + x + "-" + y;
return false;
}

View File

@ -1328,7 +1328,7 @@ namespace OpenSim.Region.Framework.Scenes
maintc = Util.EnvironmentTickCountSubtract(maintc);
maintc = (int)(m_timespan * 1000) - maintc;
if ((maintc < (m_timespan * 1000)) && maintc > 0)
if (maintc > 0)
Thread.Sleep(maintc);
// Tell the watchdog that this thread is still alive

View File

@ -128,7 +128,7 @@ namespace OpenSim.Region.Framework.Scenes
private Vector3? m_forceToApply;
private uint m_requestedSitTargetID;
private UUID m_requestedSitTargetUUID;
private Vector3 m_requestedSitOffset;
private SendCourseLocationsMethod m_sendCourseLocationsMethod;
private bool m_startAnimationSet;
@ -1898,7 +1898,7 @@ namespace OpenSim.Region.Framework.Scenes
m_nextSitAnimation = part.SitAnimation;
}
m_requestedSitTargetID = part.LocalId;
m_requestedSitOffset = offset;
//m_requestedSitOffset = offset;
m_requestedSitTargetUUID = targetID;
m_log.DebugFormat("[SIT]: Client requested Sit Position: {0}", offset);
@ -2131,7 +2131,7 @@ namespace OpenSim.Region.Framework.Scenes
if (part != null)
{
m_requestedSitTargetID = part.LocalId;
m_requestedSitOffset = offset;
//m_requestedSitOffset = offset;
m_requestedSitTargetUUID = targetID;
m_log.DebugFormat("[SIT]: Client requested Sit Position: {0}", offset);

View File

@ -4476,8 +4476,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
double x, y, z, s, t;
s = Math.Cos(angle / 2);
t = Math.Sin(angle / 2); // temp value to avoid 2 more sin() calcs
s = Math.Cos(angle * 0.5);
t = Math.Sin(angle * 0.5); // temp value to avoid 2 more sin() calcs
x = axis.x * t;
y = axis.y * t;
z = axis.z * t;

View File

@ -92,12 +92,12 @@ namespace OpenSim.Services.Connectors.Grid
try
{
UUID.TryParse((string)hash["uuid"], out uuid);
m_log.Debug(">> HERE, uuid: " + uuid);
//m_log.Debug(">> HERE, uuid: " + uuid);
info.RegionID = uuid;
if ((string)hash["handle"] != null)
{
realHandle = Convert.ToUInt64((string)hash["handle"]);
m_log.Debug(">> HERE, realHandle: " + realHandle);
//m_log.Debug(">> HERE, realHandle: " + realHandle);
}
//if (hash["region_image"] != null)
//{

View File

@ -44,9 +44,9 @@ namespace OpenSim.Tests.Clients.GridClient
{
public class GridClient
{
private static readonly ILog m_log =
LogManager.GetLogger(
MethodBase.GetCurrentMethod().DeclaringType);
// private static readonly ILog m_log =
// LogManager.GetLogger(
// MethodBase.GetCurrentMethod().DeclaringType);
public static void Main(string[] args)
{

View File

@ -1,119 +0,0 @@
[Config]
; The port number for the asset server to listen on.
listen_port = 8003
; Points to an XML file which describes assets to load on startup.
; This is "./assets/AssetSets.xml" by default and can be changed below.
;assetset_location = ./assets/AssetSets.xml
[Plugins]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Asset Storage Provider
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; SimpleAssetStorage is a very basic storage system for the purposes of
; illustrating a storage backend example. The assets are stored in
; SimpleAssets/ and TempAssets/ (which is deleted when the server shuts down).
; Metadata is generated for all of the files at startup and when new assets are
; uploaded.
;asset_storage_provider = SimpleAssetStorage
; OpenSimAssetStorage connects to a database that has an assets table created
; by OpenSim. This backend combined with the OpenSimFrontend will allow the asset
; server to be used as a drop-in replacement for OpenSim.Grid.AssetServer.exe,
; while also allowing other frontends to run.
asset_storage_provider = OpenSimAssetStorage
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Inventory Storage Provider
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; SimpleInventoryStorage is a very basic inventory storage system for the
; purposes of illustrating an inventory backend example. The inventory is stored
; in SimpleInventory/ by creating a folder for each agent that contains all of
; the inventory items and folders serialized as XML files.
;inventory_storage_provider = SimpleInventoryStorage
; OpenSimInventoryStorage connects to a database that has an inventory table
; created by OpenSim. This backend combined with the OpenSimInventoryFrontend
; will allow the server to be used as a drop-in replacement for
; OpenSim.Grid.InventoryServer.exe, while also allowing other frontends to run.
; *** NOTE: Inventory is not currently implemented.
inventory_storage_provider = OpenSimInventoryStorage
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Authentication Provider
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; NullAuthentication does nothing.
authentication_provider = NullAuthentication
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Authorization Provider
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Authorize all is a dummy authorization module that allows all requests for
; metadata, data, and asset creation. Use this extension if your primary
; storage provider or front-end interface does not support authentication.
authorization_provider = AuthorizeAll
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Metrics Provider
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; NullMetrics contains empty logging functions. Use this metrics provider if
; you want to disable metrics collection and reporting.
metrics_provider = NullMetrics
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Frontends
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Specify multiple frontends as a comma-separated list.
; ReferenceFrontend is a simple frontend that provides three basic REST
; methods. /assetid/metadata will return the metadata for an asset (currently in
; LLSD format, that will change soon). /assetid/data will return the raw asset
; data with proper Content-Type and Content-Disposition headers to make
; downloading assets in a web browser easy.
; OpenSimAssetFrontend is a frontend that matches the existing OpenSim XML for
; transferring grid assets. This will allow the asset server to function as a
; drop-in replacement for OpenSim.Grid.AssetServer.exe, and can be combined with
; OpenSimAssetStorage to provide an identical replacement, or any other asset
; storage backend.
; OpenSimInventoryFrontend is a frontend that matches the existing OpenSim XML
; for transferring inventory. This will allow the inventory server to function as
; a drop-in replacement for OpenSim.Grid.InventoryServer.exe, and can be combined
; with OpenSimInventoryStorage to provide an identical replacement, or any other
; inventory storage backend.
; *** NOTE: Inventory is not currently implemented.
; BrowseFrontend is an HTML interface for browsing through the asset store.
frontends = ReferenceFrontend,OpenSimAssetFrontend,OpenSimInventoryFrontend,BrowseFrontend
[OpenSim]
; The OpenSim section applies to the OpenSim plugin (OpenSimAssetStorage,
; OpenSimInventoryStorage, OpenSimAssetFronend, OpenSimInventoryFrontend).
; The database provider determines which database to use. Any database backend
; supported by OpenSim is supported.
asset_database_provider = "OpenSim.Data.SQLite.dll"
;asset_database_provider = "OpenSim.Data.MySQL.dll"
inventory_database_provider = "OpenSim.Data.SQLite.dll"
;inventory_database_provider = "OpenSim.Data.MySQL.dll"
; Database connection string used by the database backend.
; For SQLite
asset_database_connect = "URI=file:Asset.db,version=3"
inventory_database_connect = "URI=file:Inventory.db,version=3"
; For MySQL
;asset_database_connect = "Server=localhost; Database=opensim; User=changeme; Password=changeme;"
;inventory_database_connect = "Server=localhost; Database=opensim; User=changeme; Password=changeme;"

View File

@ -1,35 +0,0 @@
; * The startup section lists all the connectors to start up in this server
; * instance. This may be only one, or it may be the entire server suite.
; * Multiple connectors should be seaprated by commas.
; *
; * These are the IN connectors the server uses, the in connectors
; * read this config file and load the needed OUT and database connectors
; *
; *
[Startup]
ServiceConnectors = "OpenSim.Server.Handlers.dll:GridServiceConnector"
; * This is common for all services, it's the network setup for the entire
; * server instance
; *
[Network]
port = 8001
; * The following are for the remote console
; * They have no effect for the local or basic console types
; * Leave commented to diable logins to the console
;ConsoleUser = Test
;ConsolePass = secret
; * As an example, the below configuration precisely mimicks the legacy
; * asset server. It is read by the asset IN connector (defined above)
; * and it then loads the OUT connector (a local database module). That,
; * in turn, reads the asset loader and database connection information
; *
[GridService]
LocalServiceModule = "OpenSim.Services.GridService.dll:GridService"
StorageProvider = "OpenSim.Data.Null.dll:NullRegionData"
;StorageProvider = "OpenSim.Data.MySQL.dll:MySqlRegionData"
;ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=***;"
Realm = "regions"