aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Grid
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Grid/GridServer/GridManager.cs25
-rw-r--r--OpenSim/Grid/UserServer/UserLoginService.cs38
2 files changed, 58 insertions, 5 deletions
diff --git a/OpenSim/Grid/GridServer/GridManager.cs b/OpenSim/Grid/GridServer/GridManager.cs
index e9ff91a..86fc445 100644
--- a/OpenSim/Grid/GridServer/GridManager.cs
+++ b/OpenSim/Grid/GridServer/GridManager.cs
@@ -164,6 +164,27 @@ namespace OpenSim.Grid.GridServer
164 return null; 164 return null;
165 } 165 }
166 166
167 /// <summary>
168 /// Returns a region by argument
169 /// </summary>
170 /// <param name="regionName">A partial regionName of the region to return</param>
171 /// <returns>A SimProfileData for the region</returns>
172 public RegionProfileData getRegion(string regionName)
173 {
174 foreach (KeyValuePair<string, IGridData> kvp in _plugins)
175 {
176 try
177 {
178 return kvp.Value.GetProfileByString(regionName);
179 }
180 catch
181 {
182 m_log.Warn("[storage]: Unable to find region " + regionName + " via " + kvp.Key);
183 }
184 }
185 return null;
186 }
187
167 public Dictionary<ulong, RegionProfileData> getRegions(uint xmin, uint ymin, uint xmax, uint ymax) 188 public Dictionary<ulong, RegionProfileData> getRegions(uint xmin, uint ymin, uint xmax, uint ymax)
168 { 189 {
169 Dictionary<ulong, RegionProfileData> regions = new Dictionary<ulong, RegionProfileData>(); 190 Dictionary<ulong, RegionProfileData> regions = new Dictionary<ulong, RegionProfileData>();
@@ -615,6 +636,10 @@ namespace OpenSim.Grid.GridServer
615 //CFK: Console.WriteLine("requesting data for region " + (string) requestData["region_handle"]); 636 //CFK: Console.WriteLine("requesting data for region " + (string) requestData["region_handle"]);
616 simData = getRegion(Convert.ToUInt64((string)requestData["region_handle"])); 637 simData = getRegion(Convert.ToUInt64((string)requestData["region_handle"]));
617 } 638 }
639 else if (requestData.ContainsKey("region_name_search"))
640 {
641 simData = getRegion((string)requestData["region_name_search"]);
642 }
618 643
619 if (simData == null) 644 if (simData == null)
620 { 645 {
diff --git a/OpenSim/Grid/UserServer/UserLoginService.cs b/OpenSim/Grid/UserServer/UserLoginService.cs
index b85ece9..6cc34d5 100644
--- a/OpenSim/Grid/UserServer/UserLoginService.cs
+++ b/OpenSim/Grid/UserServer/UserLoginService.cs
@@ -64,6 +64,8 @@ namespace OpenSim.Grid.UserServer
64 m_config = config; 64 m_config = config;
65 } 65 }
66 66
67
68
67 /// <summary> 69 /// <summary>
68 /// Customises the login response and fills in missing values. 70 /// Customises the login response and fills in missing values.
69 /// </summary> 71 /// </summary>
@@ -95,11 +97,34 @@ namespace OpenSim.Grid.UserServer
95 } 97 }
96 else 98 else
97 { 99 {
98 // TODO: Parse out startlocationrequest string in the format; 'uri:RegionName&X&Y&Z' 100 string[] startLocationRequestParsed = Util.ParseStartLocationRequest(startLocationRequest);
99 SimInfo = 101 m_log.Info("[DEBUGLOGINPARSE]: 1:" + startLocationRequestParsed[0] + ", 2:" + startLocationRequestParsed[1] + ", 3:" + startLocationRequestParsed[2] + ", 4:" + startLocationRequestParsed[3]);
102 if (startLocationRequestParsed[0] == "last")
103 {
104 // TODO: Parse out startlocationrequest string in the format; 'uri:RegionName&X&Y&Z'
105 SimInfo =
106 RegionProfileData.RequestSimProfileData(
107 theUser.currentAgent.currentHandle, m_config.GridServerURL,
108 m_config.GridSendKey, m_config.GridRecvKey);
109 }
110 else
111 {
112 m_log.Info("[LOGIN]: Looking up Sim: " + startLocationRequestParsed[0]);
113 SimInfo =
100 RegionProfileData.RequestSimProfileData( 114 RegionProfileData.RequestSimProfileData(
101 theUser.currentAgent.currentHandle, m_config.GridServerURL, 115 startLocationRequestParsed[0], m_config.GridServerURL,
102 m_config.GridSendKey, m_config.GridRecvKey); 116 m_config.GridSendKey, m_config.GridRecvKey);
117
118 if (SimInfo == null)
119 {
120 m_log.Info("[LOGIN]: Didn't find region with a close name match sending to home location");
121 SimInfo =
122 RegionProfileData.RequestSimProfileData(
123 theUser.homeRegion, m_config.GridServerURL,
124 m_config.GridSendKey, m_config.GridRecvKey);
125 }
126
127 }
103 } 128 }
104 129
105 // Customise the response 130 // Customise the response
@@ -132,6 +157,9 @@ namespace OpenSim.Grid.UserServer
132 //CFK: m_log.Info("[LOGIN]: " + SimInfo.regionName + " (" + SimInfo.serverURI + ") " + 157 //CFK: m_log.Info("[LOGIN]: " + SimInfo.regionName + " (" + SimInfo.serverURI + ") " +
133 //CFK: SimInfo.regionLocX + "," + SimInfo.regionLocY); 158 //CFK: SimInfo.regionLocX + "," + SimInfo.regionLocY);
134 159
160 theUser.currentAgent.currentRegion = SimInfo.UUID;
161 theUser.currentAgent.currentHandle = SimInfo.regionHandle;
162
135 // Prepare notification 163 // Prepare notification
136 Hashtable SimParams = new Hashtable(); 164 Hashtable SimParams = new Hashtable();
137 SimParams["session_id"] = theUser.currentAgent.sessionID.ToString(); 165 SimParams["session_id"] = theUser.currentAgent.sessionID.ToString();
@@ -149,8 +177,7 @@ namespace OpenSim.Grid.UserServer
149 SendParams.Add(SimParams); 177 SendParams.Add(SimParams);
150 178
151 // Update agent with target sim 179 // Update agent with target sim
152 theUser.currentAgent.currentRegion = SimInfo.UUID; 180
153 theUser.currentAgent.currentHandle = SimInfo.regionHandle;
154 181
155 m_log.Info("[LOGIN]: Telling " 182 m_log.Info("[LOGIN]: Telling "
156 + SimInfo.regionName + " @ " + SimInfo.httpServerURI + " " + 183 + SimInfo.regionName + " @ " + SimInfo.httpServerURI + " " +
@@ -175,6 +202,7 @@ namespace OpenSim.Grid.UserServer
175 } 202 }
176 } 203 }
177 catch (Exception) 204 catch (Exception)
205 //catch (System.AccessViolationException)
178 { 206 {
179 tryDefault = true; 207 tryDefault = true;
180 } 208 }