Turns out that it's a bad idea to let Agent position updates linger for a long time on certain versions of mono. It's better to abort them if they take too long. So timeout is now an argument. Currently: 20secs for CreateAgent, 100secs for UpdateAgent (fat), 10 secs for UpdateAgent (Position); all of these divided by 4, for ReadWrite, as Mic had before.
							parent
							
								
									60e4c4e3e2
								
							
						
					
					
						commit
						729c42f5fa
					
				|  | @ -140,19 +140,19 @@ namespace OpenSim.Framework | ||||||
|         /// PUT JSON-encoded data to a web service that returns LLSD or |         /// PUT JSON-encoded data to a web service that returns LLSD or | ||||||
|         /// JSON data |         /// JSON data | ||||||
|         /// </summary> |         /// </summary> | ||||||
|         public static OSDMap PutToService(string url, OSDMap data) |         public static OSDMap PutToService(string url, OSDMap data, int timeout) | ||||||
|         { |         { | ||||||
|             return ServiceOSDRequest(url,data,"PUT",30000); |             return ServiceOSDRequest(url,data, "PUT", timeout); | ||||||
|         } |         } | ||||||
|          | 
 | ||||||
|         public static OSDMap PostToService(string url, OSDMap data) |         public static OSDMap PostToService(string url, OSDMap data, int timeout) | ||||||
|         { |         { | ||||||
|             return ServiceOSDRequest(url,data,"POST",30000); |             return ServiceOSDRequest(url, data, "POST", timeout); | ||||||
|         } |         } | ||||||
|          | 
 | ||||||
|         public static OSDMap GetFromService(string url) |         public static OSDMap GetFromService(string url, int timeout) | ||||||
|         { |         { | ||||||
|             return ServiceOSDRequest(url,null,"GET",30000); |             return ServiceOSDRequest(url, null, "GET", timeout); | ||||||
|         } |         } | ||||||
|          |          | ||||||
|         public static OSDMap ServiceOSDRequest(string url, OSDMap data, string method, int timeout) |         public static OSDMap ServiceOSDRequest(string url, OSDMap data, string method, int timeout) | ||||||
|  | @ -171,7 +171,7 @@ namespace OpenSim.Framework | ||||||
|                 request.Timeout = timeout; |                 request.Timeout = timeout; | ||||||
|                 request.KeepAlive = false; |                 request.KeepAlive = false; | ||||||
|                 request.MaximumAutomaticRedirections = 10; |                 request.MaximumAutomaticRedirections = 10; | ||||||
|                 request.ReadWriteTimeout = timeout * 4; |                 request.ReadWriteTimeout = timeout / 4; | ||||||
|                 request.Headers[OSHeaderRequestID] = reqnum.ToString(); |                 request.Headers[OSHeaderRequestID] = reqnum.ToString(); | ||||||
|                  |                  | ||||||
|                 // If there is some input, write it into the request |                 // If there is some input, write it into the request | ||||||
|  |  | ||||||
|  | @ -102,7 +102,7 @@ namespace OpenSim.Services.Connectors.Simulation | ||||||
|                 args["destination_uuid"] = OSD.FromString(destination.RegionID.ToString()); |                 args["destination_uuid"] = OSD.FromString(destination.RegionID.ToString()); | ||||||
|                 args["teleport_flags"] = OSD.FromString(flags.ToString()); |                 args["teleport_flags"] = OSD.FromString(flags.ToString()); | ||||||
| 
 | 
 | ||||||
|                 OSDMap result = WebUtil.PostToService(uri,args); |                 OSDMap result = WebUtil.PostToService(uri, args, 20000); | ||||||
|                 if (result["Success"].AsBoolean()) |                 if (result["Success"].AsBoolean()) | ||||||
|                     return true; |                     return true; | ||||||
|                  |                  | ||||||
|  | @ -126,7 +126,7 @@ namespace OpenSim.Services.Connectors.Simulation | ||||||
|         /// </summary> |         /// </summary> | ||||||
|         public bool UpdateAgent(GridRegion destination, AgentData data) |         public bool UpdateAgent(GridRegion destination, AgentData data) | ||||||
|         { |         { | ||||||
|             return UpdateAgent(destination, (IAgentData)data); |             return UpdateAgent(destination, (IAgentData)data, 100000); // yes, 100 seconds | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         /// <summary> |         /// <summary> | ||||||
|  | @ -181,7 +181,7 @@ namespace OpenSim.Services.Connectors.Simulation | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
| 
 | 
 | ||||||
|                 UpdateAgent(destination,(IAgentData)pos); |                 UpdateAgent(destination, (IAgentData)pos, 10000); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             // unreachable |             // unreachable | ||||||
|  | @ -191,7 +191,7 @@ namespace OpenSim.Services.Connectors.Simulation | ||||||
|         /// <summary> |         /// <summary> | ||||||
|         /// This is the worker function to send AgentData to a neighbor region |         /// This is the worker function to send AgentData to a neighbor region | ||||||
|         /// </summary> |         /// </summary> | ||||||
|         private bool UpdateAgent(GridRegion destination, IAgentData cAgentData) |         private bool UpdateAgent(GridRegion destination, IAgentData cAgentData, int timeout) | ||||||
|         { |         { | ||||||
|             // m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: UpdateAgent start"); |             // m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: UpdateAgent start"); | ||||||
| 
 | 
 | ||||||
|  | @ -207,7 +207,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.PutToService(uri,args); |                 OSDMap result = WebUtil.PutToService(uri, args, timeout); | ||||||
|                 return result["Success"].AsBoolean(); |                 return result["Success"].AsBoolean(); | ||||||
|             } |             } | ||||||
|             catch (Exception e) |             catch (Exception e) | ||||||
|  | @ -233,7 +233,7 @@ namespace OpenSim.Services.Connectors.Simulation | ||||||
| 
 | 
 | ||||||
|             try |             try | ||||||
|             { |             { | ||||||
|                 OSDMap result = WebUtil.GetFromService(uri); |                 OSDMap result = WebUtil.GetFromService(uri, 10000); | ||||||
|                 if (result["Success"].AsBoolean()) |                 if (result["Success"].AsBoolean()) | ||||||
|                 { |                 { | ||||||
|                     // OSDMap args = Util.GetOSDMap(result["_RawResult"].AsString()); |                     // OSDMap args = Util.GetOSDMap(result["_RawResult"].AsString()); | ||||||
|  | @ -384,7 +384,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()); | ||||||
| 
 | 
 | ||||||
|                 WebUtil.PostToService(uri, args); |                 WebUtil.PostToService(uri, args, 40000); | ||||||
|             } |             } | ||||||
|             catch (Exception e) |             catch (Exception e) | ||||||
|             { |             { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Diva Canto
						Diva Canto