diff options
-rw-r--r-- | OpenSim/Server/Base/ProtocolVersions.cs | 56 | ||||
-rw-r--r-- | OpenSim/Server/Handlers/Grid/GridServerPostHandler.cs | 18 | ||||
-rw-r--r-- | OpenSim/Services/Connectors/Grid/GridServiceConnector.cs | 3 |
3 files changed, 76 insertions, 1 deletions
diff --git a/OpenSim/Server/Base/ProtocolVersions.cs b/OpenSim/Server/Base/ProtocolVersions.cs new file mode 100644 index 0000000..6df27b7 --- /dev/null +++ b/OpenSim/Server/Base/ProtocolVersions.cs | |||
@@ -0,0 +1,56 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | namespace OpenSim.Server.Base | ||
29 | { | ||
30 | public class ProtocolVersions | ||
31 | { | ||
32 | /// <value> | ||
33 | /// This is the external protocol versions. It is separate from the OpenSimulator project version. | ||
34 | /// | ||
35 | /// These version numbers should be increased by 1 every time a code | ||
36 | /// change in the Service.Connectors and Server.Handlers, espectively, | ||
37 | /// makes the previous OpenSimulator revision incompatible | ||
38 | /// with the new revision. | ||
39 | /// | ||
40 | /// Changes which are compatible with an older revision (e.g. older revisions experience degraded functionality | ||
41 | /// but not outright failure) do not need a version number increment. | ||
42 | /// | ||
43 | /// Having this version number allows the grid service to reject connections from regions running a version | ||
44 | /// of the code that is too old. | ||
45 | /// | ||
46 | /// </value> | ||
47 | |||
48 | // The range of acceptable servers for client-side connectors | ||
49 | public readonly static int ClientProtocolVersionMin = 0; | ||
50 | public readonly static int ClientProtocolVersionMax = 0; | ||
51 | |||
52 | // The range of acceptable clients in server-side handlers | ||
53 | public readonly static int ServerProtocolVersionMin = 0; | ||
54 | public readonly static int ServerProtocolVersionMax = 0; | ||
55 | } | ||
56 | } | ||
diff --git a/OpenSim/Server/Handlers/Grid/GridServerPostHandler.cs b/OpenSim/Server/Handlers/Grid/GridServerPostHandler.cs index 711639f..3d72fec 100644 --- a/OpenSim/Server/Handlers/Grid/GridServerPostHandler.cs +++ b/OpenSim/Server/Handlers/Grid/GridServerPostHandler.cs | |||
@@ -118,6 +118,24 @@ namespace OpenSim.Server.Handlers.Grid | |||
118 | else | 118 | else |
119 | m_log.WarnFormat("[GRID HANDLER]: no scopeID in request to register region"); | 119 | m_log.WarnFormat("[GRID HANDLER]: no scopeID in request to register region"); |
120 | 120 | ||
121 | int versionNumberMin = 0, versionNumberMax = 0; | ||
122 | if (request.ContainsKey("VERSIONMIN")) | ||
123 | Int32.TryParse(request["VERSIONMIN"], out versionNumberMin); | ||
124 | else | ||
125 | m_log.WarnFormat("[GRID HANDLER]: no minimum protocol version in request to register region"); | ||
126 | |||
127 | if (request.ContainsKey("VERSIONMAX")) | ||
128 | Int32.TryParse(request["VERSIONMAX"], out versionNumberMax); | ||
129 | else | ||
130 | m_log.WarnFormat("[GRID HANDLER]: no maximum protocol version in request to register region"); | ||
131 | |||
132 | // Check the protocol version | ||
133 | if ((versionNumberMin > ProtocolVersions.ServerProtocolVersionMax && versionNumberMax < ProtocolVersions.ServerProtocolVersionMax)) | ||
134 | { | ||
135 | // Can't do, there is no overlap in the acceptable ranges | ||
136 | FailureResult(); | ||
137 | } | ||
138 | |||
121 | Dictionary<string, object> rinfoData = new Dictionary<string, object>(); | 139 | Dictionary<string, object> rinfoData = new Dictionary<string, object>(); |
122 | foreach (KeyValuePair<string, string> kvp in request) | 140 | foreach (KeyValuePair<string, string> kvp in request) |
123 | rinfoData[kvp.Key] = kvp.Value; | 141 | rinfoData[kvp.Key] = kvp.Value; |
diff --git a/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs b/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs index 748892a..ba46b0d 100644 --- a/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs +++ b/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs | |||
@@ -94,7 +94,8 @@ namespace OpenSim.Services.Connectors | |||
94 | sendData[kvp.Key] = (string)kvp.Value; | 94 | sendData[kvp.Key] = (string)kvp.Value; |
95 | 95 | ||
96 | sendData["SCOPEID"] = scopeID.ToString(); | 96 | sendData["SCOPEID"] = scopeID.ToString(); |
97 | 97 | sendData["VERSIONMIN"] = ProtocolVersions.ClientProtocolVersionMin.ToString(); | |
98 | sendData["VERSIONMAX"] = ProtocolVersions.ClientProtocolVersionMax.ToString(); | ||
98 | sendData["METHOD"] = "register"; | 99 | sendData["METHOD"] = "register"; |
99 | 100 | ||
100 | string reqString = ServerUtils.BuildQueryString(sendData); | 101 | string reqString = ServerUtils.BuildQueryString(sendData); |