When sending JSON-RPC calls (for UserProfile), use WebUtil instead of constructing the HTTP requests manually. This allows the calls to be logged when using "debug http all 6".
parent
6efc203ce8
commit
d15a3b10a3
|
@ -634,8 +634,6 @@ namespace OpenSim.Data.MySQL
|
||||||
{
|
{
|
||||||
if(reader.HasRows)
|
if(reader.HasRows)
|
||||||
{
|
{
|
||||||
m_log.DebugFormat("[PROFILES_DATA]" +
|
|
||||||
": Getting data for {0}.", props.UserId);
|
|
||||||
reader.Read();
|
reader.Read();
|
||||||
props.WebUrl = (string)reader["profileURL"];
|
props.WebUrl = (string)reader["profileURL"];
|
||||||
UUID.TryParse((string)reader["profileImage"], out props.ImageId);
|
UUID.TryParse((string)reader["profileImage"], out props.ImageId);
|
||||||
|
@ -651,9 +649,6 @@ namespace OpenSim.Data.MySQL
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.DebugFormat("[PROFILES_DATA]" +
|
|
||||||
": No data for {0}", props.UserId);
|
|
||||||
|
|
||||||
props.WebUrl = string.Empty;
|
props.WebUrl = string.Empty;
|
||||||
props.ImageId = UUID.Zero;
|
props.ImageId = UUID.Zero;
|
||||||
props.AboutText = string.Empty;
|
props.AboutText = string.Empty;
|
||||||
|
|
|
@ -584,9 +584,6 @@ namespace OpenSim.Data.SQLite
|
||||||
}
|
}
|
||||||
if(reader != null && reader.Read())
|
if(reader != null && reader.Read())
|
||||||
{
|
{
|
||||||
m_log.DebugFormat("[PROFILES_DATA]" +
|
|
||||||
": Getting data for {0}.", props.UserId);
|
|
||||||
|
|
||||||
props.WebUrl = (string)reader["profileURL"];
|
props.WebUrl = (string)reader["profileURL"];
|
||||||
UUID.TryParse((string)reader["profileImage"], out props.ImageId);
|
UUID.TryParse((string)reader["profileImage"], out props.ImageId);
|
||||||
props.AboutText = (string)reader["profileAboutText"];
|
props.AboutText = (string)reader["profileAboutText"];
|
||||||
|
@ -601,9 +598,6 @@ namespace OpenSim.Data.SQLite
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.DebugFormat("[PROFILES_DATA]" +
|
|
||||||
": No data for {0}", props.UserId);
|
|
||||||
|
|
||||||
props.WebUrl = string.Empty;
|
props.WebUrl = string.Empty;
|
||||||
props.ImageId = UUID.Zero;
|
props.ImageId = UUID.Zero;
|
||||||
props.AboutText = string.Empty;
|
props.AboutText = string.Empty;
|
||||||
|
|
|
@ -48,7 +48,6 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Web Util
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Sends json-rpc request with a serializable type.
|
/// Sends json-rpc request with a serializable type.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -70,62 +69,60 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
public bool JsonRpcRequest(ref object parameters, string method, string uri, string jsonId)
|
public bool JsonRpcRequest(ref object parameters, string method, string uri, string jsonId)
|
||||||
{
|
{
|
||||||
if (jsonId == null)
|
if (jsonId == null)
|
||||||
throw new ArgumentNullException ("jsonId");
|
throw new ArgumentNullException("jsonId");
|
||||||
if (uri == null)
|
if (uri == null)
|
||||||
throw new ArgumentNullException ("uri");
|
throw new ArgumentNullException("uri");
|
||||||
if (method == null)
|
if (method == null)
|
||||||
throw new ArgumentNullException ("method");
|
throw new ArgumentNullException("method");
|
||||||
if (parameters == null)
|
if (parameters == null)
|
||||||
throw new ArgumentNullException ("parameters");
|
throw new ArgumentNullException("parameters");
|
||||||
|
|
||||||
// Prep our payload
|
OSDMap request = new OSDMap();
|
||||||
OSDMap json = new OSDMap();
|
request.Add("jsonrpc", OSD.FromString("2.0"));
|
||||||
|
request.Add("id", OSD.FromString(jsonId));
|
||||||
|
request.Add("method", OSD.FromString(method));
|
||||||
|
request.Add("params", OSD.SerializeMembers(parameters));
|
||||||
|
|
||||||
json.Add("jsonrpc", OSD.FromString("2.0"));
|
OSDMap response;
|
||||||
json.Add("id", OSD.FromString(jsonId));
|
|
||||||
json.Add("method", OSD.FromString(method));
|
|
||||||
|
|
||||||
json.Add("params", OSD.SerializeMembers(parameters));
|
|
||||||
|
|
||||||
string jsonRequestData = OSDParser.SerializeJsonString(json);
|
|
||||||
byte[] content = Encoding.UTF8.GetBytes(jsonRequestData);
|
|
||||||
|
|
||||||
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(uri);
|
|
||||||
|
|
||||||
webRequest.ContentType = "application/json-rpc";
|
|
||||||
webRequest.Method = "POST";
|
|
||||||
|
|
||||||
//Stream dataStream = webRequest.GetRequestStream();
|
|
||||||
//dataStream.Write(content, 0, content.Length);
|
|
||||||
//dataStream.Close();
|
|
||||||
|
|
||||||
using (Stream dataStream = webRequest.GetRequestStream())
|
|
||||||
dataStream.Write(content, 0, content.Length);
|
|
||||||
|
|
||||||
WebResponse webResponse = null;
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
webResponse = webRequest.GetResponse();
|
response = WebUtil.PostToService(uri, request, 10000, true);
|
||||||
}
|
}
|
||||||
catch (WebException e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
Console.WriteLine("Web Error" + e.Message);
|
m_log.Debug(string.Format("JsonRpc request '{0}' failed", method), e);
|
||||||
Console.WriteLine ("Please check input");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
using (webResponse)
|
if (!response.ContainsKey("_Result"))
|
||||||
using (Stream rstream = webResponse.GetResponseStream())
|
|
||||||
{
|
{
|
||||||
OSDMap mret = (OSDMap)OSDParser.DeserializeJson(rstream);
|
m_log.DebugFormat("JsonRpc request '{0}' returned an invalid response: {1}",
|
||||||
|
method, OSDParser.SerializeJsonString(response));
|
||||||
if (mret.ContainsKey("error"))
|
return false;
|
||||||
return false;
|
|
||||||
|
|
||||||
// get params...
|
|
||||||
OSD.DeserializeMembers(ref parameters, (OSDMap)mret["result"]);
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
response = (OSDMap)response["_Result"];
|
||||||
|
|
||||||
|
OSD data;
|
||||||
|
|
||||||
|
if (response.ContainsKey("error"))
|
||||||
|
{
|
||||||
|
data = response["error"];
|
||||||
|
m_log.DebugFormat("JsonRpc request '{0}' returned an error: {1}",
|
||||||
|
method, OSDParser.SerializeJsonString(data));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!response.ContainsKey("result"))
|
||||||
|
{
|
||||||
|
m_log.DebugFormat("JsonRpc request '{0}' returned an invalid response: {1}",
|
||||||
|
method, OSDParser.SerializeJsonString(response));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
data = response["result"];
|
||||||
|
OSD.DeserializeMembers(ref parameters, (OSDMap)data);
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -135,7 +132,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
/// The rpc request.
|
/// The rpc request.
|
||||||
/// </returns>
|
/// </returns>
|
||||||
/// <param name='data'>
|
/// <param name='data'>
|
||||||
/// data - incoming as parameters, outgong as result/error
|
/// data - incoming as parameters, outgoing as result/error
|
||||||
/// </param>
|
/// </param>
|
||||||
/// <param name='method'>
|
/// <param name='method'>
|
||||||
/// Json-rpc method to call.
|
/// Json-rpc method to call.
|
||||||
|
@ -148,64 +145,46 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
/// </param>
|
/// </param>
|
||||||
public bool JsonRpcRequest(ref OSD data, string method, string uri, string jsonId)
|
public bool JsonRpcRequest(ref OSD data, string method, string uri, string jsonId)
|
||||||
{
|
{
|
||||||
OSDMap map = new OSDMap();
|
if (string.IsNullOrEmpty(jsonId))
|
||||||
|
jsonId = UUID.Random().ToString();
|
||||||
|
|
||||||
map["jsonrpc"] = "2.0";
|
OSDMap request = new OSDMap();
|
||||||
if(string.IsNullOrEmpty(jsonId))
|
request.Add("jsonrpc", OSD.FromString("2.0"));
|
||||||
map["id"] = UUID.Random().ToString();
|
request.Add("id", OSD.FromString(jsonId));
|
||||||
else
|
request.Add("method", OSD.FromString(method));
|
||||||
map["id"] = jsonId;
|
request.Add("params", data);
|
||||||
|
|
||||||
map["method"] = method;
|
OSDMap response;
|
||||||
map["params"] = data;
|
|
||||||
|
|
||||||
string jsonRequestData = OSDParser.SerializeJsonString(map);
|
|
||||||
byte[] content = Encoding.UTF8.GetBytes(jsonRequestData);
|
|
||||||
|
|
||||||
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(uri);
|
|
||||||
webRequest.ContentType = "application/json-rpc";
|
|
||||||
webRequest.Method = "POST";
|
|
||||||
|
|
||||||
using (Stream dataStream = webRequest.GetRequestStream())
|
|
||||||
dataStream.Write(content, 0, content.Length);
|
|
||||||
|
|
||||||
WebResponse webResponse = null;
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
webResponse = webRequest.GetResponse();
|
response = WebUtil.PostToService(uri, request, 10000, true);
|
||||||
}
|
}
|
||||||
catch (WebException e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
Console.WriteLine("Web Error" + e.Message);
|
m_log.Debug(string.Format("JsonRpc request '{0}' failed", method), e);
|
||||||
Console.WriteLine ("Please check input");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
using (webResponse)
|
if (!response.ContainsKey("_Result"))
|
||||||
using (Stream rstream = webResponse.GetResponseStream())
|
|
||||||
{
|
{
|
||||||
OSDMap response = new OSDMap();
|
m_log.DebugFormat("JsonRpc request '{0}' returned an invalid response: {1}",
|
||||||
try
|
method, OSDParser.SerializeJsonString(response));
|
||||||
{
|
return false;
|
||||||
response = (OSDMap)OSDParser.DeserializeJson(rstream);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
m_log.DebugFormat("[JSONRPC]: JsonRpcRequest Error {0}", e.Message);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (response.ContainsKey("error"))
|
|
||||||
{
|
|
||||||
data = response["error"];
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
data = response;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
response = (OSDMap)response["_Result"];
|
||||||
|
|
||||||
|
if (response.ContainsKey("error"))
|
||||||
|
{
|
||||||
|
data = response["error"];
|
||||||
|
m_log.DebugFormat("JsonRpc request '{0}' returned an error: {1}",
|
||||||
|
method, OSDParser.SerializeJsonString(data));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
data = response;
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
#endregion Web Util
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -127,41 +127,41 @@ namespace OpenSim.Framework
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static OSDMap PutToServiceCompressed(string url, OSDMap data, int timeout)
|
public static OSDMap PutToServiceCompressed(string url, OSDMap data, int timeout)
|
||||||
{
|
{
|
||||||
return ServiceOSDRequest(url,data, "PUT", timeout, true);
|
return ServiceOSDRequest(url,data, "PUT", timeout, true, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static OSDMap PutToService(string url, OSDMap data, int timeout)
|
public static OSDMap PutToService(string url, OSDMap data, int timeout)
|
||||||
{
|
{
|
||||||
return ServiceOSDRequest(url,data, "PUT", timeout, false);
|
return ServiceOSDRequest(url,data, "PUT", timeout, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static OSDMap PostToService(string url, OSDMap data, int timeout)
|
public static OSDMap PostToService(string url, OSDMap data, int timeout, bool rpc)
|
||||||
{
|
{
|
||||||
return ServiceOSDRequest(url, data, "POST", timeout, false);
|
return ServiceOSDRequest(url, data, "POST", timeout, false, rpc);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static OSDMap PostToServiceCompressed(string url, OSDMap data, int timeout)
|
public static OSDMap PostToServiceCompressed(string url, OSDMap data, int timeout)
|
||||||
{
|
{
|
||||||
return ServiceOSDRequest(url, data, "POST", timeout, true);
|
return ServiceOSDRequest(url, data, "POST", timeout, true, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static OSDMap GetFromService(string url, int timeout)
|
public static OSDMap GetFromService(string url, int timeout)
|
||||||
{
|
{
|
||||||
return ServiceOSDRequest(url, null, "GET", timeout, false);
|
return ServiceOSDRequest(url, null, "GET", timeout, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static OSDMap ServiceOSDRequest(string url, OSDMap data, string method, int timeout, bool compressed)
|
public static OSDMap ServiceOSDRequest(string url, OSDMap data, string method, int timeout, bool compressed, bool rpc)
|
||||||
{
|
{
|
||||||
if (SerializeOSDRequestsPerEndpoint)
|
if (SerializeOSDRequestsPerEndpoint)
|
||||||
{
|
{
|
||||||
lock (EndPointLock(url))
|
lock (EndPointLock(url))
|
||||||
{
|
{
|
||||||
return ServiceOSDRequestWorker(url, data, method, timeout, compressed);
|
return ServiceOSDRequestWorker(url, data, method, timeout, compressed, rpc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return ServiceOSDRequestWorker(url, data, method, timeout, compressed);
|
return ServiceOSDRequestWorker(url, data, method, timeout, compressed, rpc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,7 +217,7 @@ namespace OpenSim.Framework
|
||||||
LogOutgoingDetail("RESPONSE: ", input);
|
LogOutgoingDetail("RESPONSE: ", input);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static OSDMap ServiceOSDRequestWorker(string url, OSDMap data, string method, int timeout, bool compressed)
|
private static OSDMap ServiceOSDRequestWorker(string url, OSDMap data, string method, int timeout, bool compressed, bool rpc)
|
||||||
{
|
{
|
||||||
int reqnum = RequestNumber++;
|
int reqnum = RequestNumber++;
|
||||||
|
|
||||||
|
@ -251,7 +251,7 @@ namespace OpenSim.Framework
|
||||||
|
|
||||||
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(strBuffer);
|
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(strBuffer);
|
||||||
|
|
||||||
request.ContentType = "application/json";
|
request.ContentType = rpc ? "application/json-rpc" : "application/json";
|
||||||
|
|
||||||
if (compressed)
|
if (compressed)
|
||||||
{
|
{
|
||||||
|
|
|
@ -136,7 +136,7 @@ namespace OpenSim.Services.Connectors.Simulation
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try the old version, uncompressed
|
// Try the old version, uncompressed
|
||||||
result = WebUtil.PostToService(uri, args, 30000);
|
result = WebUtil.PostToService(uri, args, 30000, false);
|
||||||
|
|
||||||
if (result["Success"].AsBoolean())
|
if (result["Success"].AsBoolean())
|
||||||
{
|
{
|
||||||
|
@ -302,7 +302,7 @@ namespace OpenSim.Services.Connectors.Simulation
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
OSDMap result = WebUtil.ServiceOSDRequest(uri, request, "QUERYACCESS", 30000, false);
|
OSDMap result = WebUtil.ServiceOSDRequest(uri, request, "QUERYACCESS", 30000, false, false);
|
||||||
bool success = result["success"].AsBoolean();
|
bool success = result["success"].AsBoolean();
|
||||||
if (result.ContainsKey("_Result"))
|
if (result.ContainsKey("_Result"))
|
||||||
{
|
{
|
||||||
|
@ -365,7 +365,7 @@ namespace OpenSim.Services.Connectors.Simulation
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
WebUtil.ServiceOSDRequest(uri, null, "DELETE", 10000, false);
|
WebUtil.ServiceOSDRequest(uri, null, "DELETE", 10000, false, false);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
@ -384,7 +384,7 @@ namespace OpenSim.Services.Connectors.Simulation
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
WebUtil.ServiceOSDRequest(uri, null, "DELETE", 10000, false);
|
WebUtil.ServiceOSDRequest(uri, null, "DELETE", 10000, false, false);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
@ -431,7 +431,7 @@ namespace OpenSim.Services.Connectors.Simulation
|
||||||
args["destination_name"] = OSD.FromString(destination.RegionName);
|
args["destination_name"] = OSD.FromString(destination.RegionName);
|
||||||
args["destination_uuid"] = OSD.FromString(destination.RegionID.ToString());
|
args["destination_uuid"] = OSD.FromString(destination.RegionID.ToString());
|
||||||
|
|
||||||
OSDMap result = WebUtil.PostToService(uri, args, 40000);
|
OSDMap result = WebUtil.PostToService(uri, args, 40000, false);
|
||||||
|
|
||||||
if (result == null)
|
if (result == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in New Issue