aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorMelanie Thielker2015-10-31 16:57:24 +0100
committerMelanie Thielker2015-10-31 16:57:24 +0100
commitdc6bdbf740d4c903b06fef386c4b80df783a7b2e (patch)
tree5a03f838ade38349d0b6f05275be85c257d5b5fe /OpenSim
parentfix mantis 7734, Thanks Garmin for the report (diff)
downloadopensim-SC-dc6bdbf740d4c903b06fef386c4b80df783a7b2e.zip
opensim-SC-dc6bdbf740d4c903b06fef386c4b80df783a7b2e.tar.gz
opensim-SC-dc6bdbf740d4c903b06fef386c4b80df783a7b2e.tar.bz2
opensim-SC-dc6bdbf740d4c903b06fef386c4b80df783a7b2e.tar.xz
Put back the option of having asymmetrical protocol versions in
transfers
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Server/Handlers/Simulation/AgentHandlers.cs43
-rw-r--r--OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs8
2 files changed, 23 insertions, 28 deletions
diff --git a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs
index e8456b4..6faeefd 100644
--- a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs
+++ b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs
@@ -156,8 +156,8 @@ namespace OpenSim.Server.Handlers.Simulation
156 } 156 }
157 157
158 // Decode the new versioning data 158 // Decode the new versioning data
159// float minVersionRequired = 0f; 159 float minVersionRequired = 0f;
160// float maxVersionRequired = 0f; 160 float maxVersionRequired = 0f;
161 float minVersionProvided = 0f; 161 float minVersionProvided = 0f;
162 float maxVersionProvided = 0f; 162 float maxVersionProvided = 0f;
163 163
@@ -166,10 +166,10 @@ namespace OpenSim.Server.Handlers.Simulation
166 if (args.ContainsKey("simulation_service_supported_max")) 166 if (args.ContainsKey("simulation_service_supported_max"))
167 maxVersionProvided = (float)args["simulation_service_supported_max"].AsReal(); 167 maxVersionProvided = (float)args["simulation_service_supported_max"].AsReal();
168 168
169// if (args.ContainsKey("simulation_service_accepted_min")) 169 if (args.ContainsKey("simulation_service_accepted_min"))
170// minVersionRequired = (float)args["simulation_service_accepted_min"].AsReal(); 170 minVersionRequired = (float)args["simulation_service_accepted_min"].AsReal();
171// if (args.ContainsKey("simulation_service_accepted_max")) 171 if (args.ContainsKey("simulation_service_accepted_max"))
172// maxVersionRequired = (float)args["simulation_service_accepted_max"].AsReal(); 172 maxVersionRequired = (float)args["simulation_service_accepted_max"].AsReal();
173 173
174 responsedata["int_response_code"] = HttpStatusCode.OK; 174 responsedata["int_response_code"] = HttpStatusCode.OK;
175 OSDMap resp = new OSDMap(3); 175 OSDMap resp = new OSDMap(3);
@@ -195,14 +195,13 @@ namespace OpenSim.Server.Handlers.Simulation
195 version > VersionInfo.SimulationServiceVersionAcceptedMax ) 195 version > VersionInfo.SimulationServiceVersionAcceptedMax )
196 { 196 {
197 resp["success"] = OSD.FromBoolean(false); 197 resp["success"] = OSD.FromBoolean(false);
198 resp["reason"] = OSD.FromString(String.Format("Your region protocol version is {0} and destiny accepts only {1} - {2}", theirVersion, VersionInfo.SimulationServiceVersionAcceptedMin, VersionInfo.SimulationServiceVersionAcceptedMax)); 198 resp["reason"] = OSD.FromString(String.Format("Your region protocol version is {0} and we accept only {1} - {2}. No version overlap.", theirVersion, VersionInfo.SimulationServiceVersionAcceptedMin, VersionInfo.SimulationServiceVersionAcceptedMax));
199 responsedata["str_response_string"] = OSDParser.SerializeJsonString(resp, true); 199 responsedata["str_response_string"] = OSDParser.SerializeJsonString(resp, true);
200 return; 200 return;
201 } 201 }
202 } 202 }
203 else 203 else
204 { 204 {
205/*
206 // Test for no overlap 205 // Test for no overlap
207 if (minVersionProvided > VersionInfo.SimulationServiceVersionAcceptedMax || 206 if (minVersionProvided > VersionInfo.SimulationServiceVersionAcceptedMax ||
208 maxVersionProvided < VersionInfo.SimulationServiceVersionAcceptedMin) 207 maxVersionProvided < VersionInfo.SimulationServiceVersionAcceptedMin)
@@ -221,9 +220,16 @@ namespace OpenSim.Server.Handlers.Simulation
221 return; 220 return;
222 } 221 }
223 222
224 // Determine version to use 223 // Determine versions to use
224 float inboundVersion = Math.Min(maxVersionProvided, VersionInfo.SimulationServiceVersionAcceptedMax);
225 float outboundVersion = Math.Min(maxVersionRequired, VersionInfo.SimulationServiceVersionSupportedMax);
226
227 // In this stage, we use only a single version number. Future regions may use asymmetrical protocols.
228 // Here, the two versions we determined are combined into a single version for now.
229 version = Math.Max(inboundVersion, outboundVersion);
225 230
226 version = Math.Max(Math.Min(maxVersionProvided, VersionInfo.SimulationServiceVersionAcceptedMax), Math.Min(maxVersionRequired, VersionInfo.SimulationServiceVersionSupportedMax)); 231 // Since only using a single version, we must do this check. Once the plumbing is in for asymmetrical
232 // protocols, this will go away, allowing more working combinations.
227 if (version < VersionInfo.SimulationServiceVersionAcceptedMin || 233 if (version < VersionInfo.SimulationServiceVersionAcceptedMin ||
228 version > VersionInfo.SimulationServiceVersionAcceptedMax || 234 version > VersionInfo.SimulationServiceVersionAcceptedMax ||
229 version < VersionInfo.SimulationServiceVersionSupportedMin || 235 version < VersionInfo.SimulationServiceVersionSupportedMin ||
@@ -234,20 +240,6 @@ namespace OpenSim.Server.Handlers.Simulation
234 responsedata["str_response_string"] = OSDParser.SerializeJsonString(resp, true); 240 responsedata["str_response_string"] = OSDParser.SerializeJsonString(resp, true);
235 return; 241 return;
236 } 242 }
237*/
238 // find max possible version to use
239 version = Math.Min(VersionInfo.SimulationServiceVersionAcceptedMax, maxVersionProvided);
240 // check if within lower bounds
241 if(version < VersionInfo.SimulationServiceVersionAcceptedMin ||
242 version < minVersionProvided)
243 {
244 resp["success"] = OSD.FromBoolean(false);
245 resp["reason"] = OSD.FromString(String.Format("Region protocol versions are incompatible. Destiny accepts {0} - {1} and source provides {2} - {3}.", VersionInfo.SimulationServiceVersionAcceptedMin, VersionInfo.SimulationServiceVersionAcceptedMax,
246 minVersionProvided,
247 maxVersionProvided));
248 responsedata["str_response_string"] = OSDParser.SerializeJsonString(resp, true);
249 return;
250 }
251 } 243 }
252 244
253 List<UUID> features = new List<UUID>(); 245 List<UUID> features = new List<UUID>();
@@ -271,7 +263,8 @@ namespace OpenSim.Server.Handlers.Simulation
271 resp["reason"] = OSD.FromString(reason); 263 resp["reason"] = OSD.FromString(reason);
272 string legacyVersion = String.Format("SIMULATION/{0}", version); 264 string legacyVersion = String.Format("SIMULATION/{0}", version);
273 resp["version"] = OSD.FromString(legacyVersion); 265 resp["version"] = OSD.FromString(legacyVersion);
274 resp["negotiated_version"] = OSD.FromReal(version); 266 resp["negotiated_inbound_version"] = OSD.FromReal(version); //inboundVersion);
267 resp["negotiated_outbound_version"] = OSD.FromReal(version); //outboundVersion);
275 resp["variable_wearables_count_supported"] = OSD.FromBoolean(true); 268 resp["variable_wearables_count_supported"] = OSD.FromBoolean(true);
276 269
277 OSDArray featuresWanted = new OSDArray(); 270 OSDArray featuresWanted = new OSDArray();
diff --git a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs
index 9e800af..9f0cc8e 100644
--- a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs
+++ b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs
@@ -304,8 +304,8 @@ namespace OpenSim.Services.Connectors.Simulation
304 // New simulation service negotiation 304 // New simulation service negotiation
305 request.Add("simulation_service_supported_min", OSD.FromReal(VersionInfo.SimulationServiceVersionSupportedMin)); 305 request.Add("simulation_service_supported_min", OSD.FromReal(VersionInfo.SimulationServiceVersionSupportedMin));
306 request.Add("simulation_service_supported_max", OSD.FromReal(VersionInfo.SimulationServiceVersionSupportedMax)); 306 request.Add("simulation_service_supported_max", OSD.FromReal(VersionInfo.SimulationServiceVersionSupportedMax));
307// request.Add("simulation_service_accepted_min", OSD.FromReal(VersionInfo.SimulationServiceVersionAcceptedMin)); 307 request.Add("simulation_service_accepted_min", OSD.FromReal(VersionInfo.SimulationServiceVersionAcceptedMin));
308// request.Add("simulation_service_accepted_max", OSD.FromReal(VersionInfo.SimulationServiceVersionAcceptedMax)); 308 request.Add("simulation_service_accepted_max", OSD.FromReal(VersionInfo.SimulationServiceVersionAcceptedMax));
309 309
310 OSDArray features = new OSDArray(); 310 OSDArray features = new OSDArray();
311 foreach (UUID feature in featuresAvailable) 311 foreach (UUID feature in featuresAvailable)
@@ -329,7 +329,9 @@ namespace OpenSim.Services.Connectors.Simulation
329 success = data["success"]; 329 success = data["success"];
330 330
331 reason = data["reason"].AsString(); 331 reason = data["reason"].AsString();
332 if (data.ContainsKey("negotiated_version") && data["negotiated_version"] != null) 332 // We will need to plumb this and start sing the outbound version as well
333 // TODO: lay the pipe for version plumbing
334 if (data.ContainsKey("negotiated_inbound_version") && data["negotiated_inbound_version"] != null)
333 { 335 {
334 version = (float)data["negotiated_version"].AsReal(); 336 version = (float)data["negotiated_version"].AsReal();
335 } 337 }