diff options
author | Adam Frisby | 2007-05-30 02:36:48 +0000 |
---|---|---|
committer | Adam Frisby | 2007-05-30 02:36:48 +0000 |
commit | b0de1b93f9ddc7a111d72ea03eae32ff486089a1 (patch) | |
tree | 7286e30966ce16fde5d2f03a2612725fec5c85be | |
parent | Another rebuild of the build files! :O (diff) | |
download | opensim-SC_OLD-b0de1b93f9ddc7a111d72ea03eae32ff486089a1.zip opensim-SC_OLD-b0de1b93f9ddc7a111d72ea03eae32ff486089a1.tar.gz opensim-SC_OLD-b0de1b93f9ddc7a111d72ea03eae32ff486089a1.tar.bz2 opensim-SC_OLD-b0de1b93f9ddc7a111d72ea03eae32ff486089a1.tar.xz |
* Added reconnect support for MySQL Data interfaces if they time out. (Grid/User modes only now, Log todo)
* Begun writing support for supporting the "Start" region login parameter.
4 files changed, 85 insertions, 6 deletions
diff --git a/OpenGridServices/OpenGrid.Framework.Data.MySQL/MySQLGridData.cs b/OpenGridServices/OpenGrid.Framework.Data.MySQL/MySQLGridData.cs index 6ac8cc3..5006aaf 100644 --- a/OpenGridServices/OpenGrid.Framework.Data.MySQL/MySQLGridData.cs +++ b/OpenGridServices/OpenGrid.Framework.Data.MySQL/MySQLGridData.cs | |||
@@ -75,6 +75,7 @@ namespace OpenGrid.Framework.Data.MySQL | |||
75 | } | 75 | } |
76 | catch (Exception e) | 76 | catch (Exception e) |
77 | { | 77 | { |
78 | database.Reconnect(); | ||
78 | Console.WriteLine(e.ToString()); | 79 | Console.WriteLine(e.ToString()); |
79 | return null; | 80 | return null; |
80 | } | 81 | } |
@@ -106,6 +107,7 @@ namespace OpenGrid.Framework.Data.MySQL | |||
106 | } | 107 | } |
107 | catch (Exception e) | 108 | catch (Exception e) |
108 | { | 109 | { |
110 | database.Reconnect(); | ||
109 | Console.WriteLine(e.ToString()); | 111 | Console.WriteLine(e.ToString()); |
110 | return null; | 112 | return null; |
111 | } | 113 | } |
@@ -137,6 +139,7 @@ namespace OpenGrid.Framework.Data.MySQL | |||
137 | } | 139 | } |
138 | catch (Exception e) | 140 | catch (Exception e) |
139 | { | 141 | { |
142 | database.Reconnect(); | ||
140 | Console.WriteLine(e.ToString()); | 143 | Console.WriteLine(e.ToString()); |
141 | return null; | 144 | return null; |
142 | } | 145 | } |
diff --git a/OpenGridServices/OpenGrid.Framework.Data.MySQL/MySQLManager.cs b/OpenGridServices/OpenGrid.Framework.Data.MySQL/MySQLManager.cs index aee18b9..2eaa158 100644 --- a/OpenGridServices/OpenGrid.Framework.Data.MySQL/MySQLManager.cs +++ b/OpenGridServices/OpenGrid.Framework.Data.MySQL/MySQLManager.cs | |||
@@ -16,6 +16,7 @@ namespace OpenGrid.Framework.Data.MySQL | |||
16 | class MySQLManager | 16 | class MySQLManager |
17 | { | 17 | { |
18 | IDbConnection dbcon; | 18 | IDbConnection dbcon; |
19 | string connectionString; | ||
19 | 20 | ||
20 | /// <summary> | 21 | /// <summary> |
21 | /// Initialises and creates a new MySQL connection and maintains it. | 22 | /// Initialises and creates a new MySQL connection and maintains it. |
@@ -29,7 +30,7 @@ namespace OpenGrid.Framework.Data.MySQL | |||
29 | { | 30 | { |
30 | try | 31 | try |
31 | { | 32 | { |
32 | string connectionString = "Server=" + hostname + ";Port=" + port + ";Database=" + database + ";User ID=" + username + ";Password=" + password + ";Pooling=" + cpooling + ";"; | 33 | connectionString = "Server=" + hostname + ";Port=" + port + ";Database=" + database + ";User ID=" + username + ";Password=" + password + ";Pooling=" + cpooling + ";"; |
33 | dbcon = new MySqlConnection(connectionString); | 34 | dbcon = new MySqlConnection(connectionString); |
34 | 35 | ||
35 | dbcon.Open(); | 36 | dbcon.Open(); |
@@ -52,6 +53,28 @@ namespace OpenGrid.Framework.Data.MySQL | |||
52 | } | 53 | } |
53 | 54 | ||
54 | /// <summary> | 55 | /// <summary> |
56 | /// Reconnects to the database | ||
57 | /// </summary> | ||
58 | public void Reconnect() | ||
59 | { | ||
60 | lock (dbcon) | ||
61 | { | ||
62 | try | ||
63 | { | ||
64 | // Close the DB connection | ||
65 | dbcon.Close(); | ||
66 | // Try reopen it | ||
67 | dbcon = new MySqlConnection(connectionString); | ||
68 | dbcon.Open(); | ||
69 | } | ||
70 | catch (Exception e) | ||
71 | { | ||
72 | Console.WriteLine("Unable to reconnect to database " + e.ToString()); | ||
73 | } | ||
74 | } | ||
75 | } | ||
76 | |||
77 | /// <summary> | ||
55 | /// Runs a query with protection against SQL Injection by using parameterised input. | 78 | /// Runs a query with protection against SQL Injection by using parameterised input. |
56 | /// </summary> | 79 | /// </summary> |
57 | /// <param name="sql">The SQL string - replace any variables such as WHERE x = "y" with WHERE x = @y</param> | 80 | /// <param name="sql">The SQL string - replace any variables such as WHERE x = "y" with WHERE x = @y</param> |
@@ -70,10 +93,47 @@ namespace OpenGrid.Framework.Data.MySQL | |||
70 | 93 | ||
71 | return (IDbCommand)dbcommand; | 94 | return (IDbCommand)dbcommand; |
72 | } | 95 | } |
73 | catch (Exception e) | 96 | catch |
74 | { | 97 | { |
75 | Console.WriteLine("Failed during Query generation: " + e.ToString()); | 98 | lock (dbcon) |
76 | return null; | 99 | { |
100 | // Close the DB connection | ||
101 | try | ||
102 | { | ||
103 | dbcon.Close(); | ||
104 | } | ||
105 | catch { } | ||
106 | |||
107 | // Try reopen it | ||
108 | try | ||
109 | { | ||
110 | dbcon = new MySqlConnection(connectionString); | ||
111 | dbcon.Open(); | ||
112 | } | ||
113 | catch (Exception e) | ||
114 | { | ||
115 | Console.WriteLine("Unable to reconnect to database " + e.ToString()); | ||
116 | } | ||
117 | |||
118 | // Run the query again | ||
119 | try | ||
120 | { | ||
121 | MySqlCommand dbcommand = (MySqlCommand)dbcon.CreateCommand(); | ||
122 | dbcommand.CommandText = sql; | ||
123 | foreach (KeyValuePair<string, string> param in parameters) | ||
124 | { | ||
125 | dbcommand.Parameters.Add(param.Key, param.Value); | ||
126 | } | ||
127 | |||
128 | return (IDbCommand)dbcommand; | ||
129 | } | ||
130 | catch (Exception e) | ||
131 | { | ||
132 | // Return null if it fails. | ||
133 | Console.WriteLine("Failed during Query generation: " + e.ToString()); | ||
134 | return null; | ||
135 | } | ||
136 | } | ||
77 | } | 137 | } |
78 | } | 138 | } |
79 | 139 | ||
diff --git a/OpenGridServices/OpenGrid.Framework.Data.MySQL/MySQLUserData.cs b/OpenGridServices/OpenGrid.Framework.Data.MySQL/MySQLUserData.cs index 57dbfc6..6f3cad6 100644 --- a/OpenGridServices/OpenGrid.Framework.Data.MySQL/MySQLUserData.cs +++ b/OpenGridServices/OpenGrid.Framework.Data.MySQL/MySQLUserData.cs | |||
@@ -51,6 +51,7 @@ namespace OpenGrid.Framework.Data.MySQL | |||
51 | } | 51 | } |
52 | catch (Exception e) | 52 | catch (Exception e) |
53 | { | 53 | { |
54 | database.Reconnect(); | ||
54 | Console.WriteLine(e.ToString()); | 55 | Console.WriteLine(e.ToString()); |
55 | return null; | 56 | return null; |
56 | } | 57 | } |
@@ -78,6 +79,7 @@ namespace OpenGrid.Framework.Data.MySQL | |||
78 | } | 79 | } |
79 | catch (Exception e) | 80 | catch (Exception e) |
80 | { | 81 | { |
82 | database.Reconnect(); | ||
81 | Console.WriteLine(e.ToString()); | 83 | Console.WriteLine(e.ToString()); |
82 | return null; | 84 | return null; |
83 | } | 85 | } |
@@ -116,6 +118,7 @@ namespace OpenGrid.Framework.Data.MySQL | |||
116 | } | 118 | } |
117 | catch (Exception e) | 119 | catch (Exception e) |
118 | { | 120 | { |
121 | database.Reconnect(); | ||
119 | Console.WriteLine(e.ToString()); | 122 | Console.WriteLine(e.ToString()); |
120 | return null; | 123 | return null; |
121 | } | 124 | } |
diff --git a/OpenGridServices/OpenGridServices.UserServer/UserManager.cs b/OpenGridServices/OpenGridServices.UserServer/UserManager.cs index cd80621..21ecc50 100644 --- a/OpenGridServices/OpenGridServices.UserServer/UserManager.cs +++ b/OpenGridServices/OpenGridServices.UserServer/UserManager.cs | |||
@@ -395,10 +395,23 @@ namespace OpenGridServices.UserServer | |||
395 | // If user specified additional start, use that | 395 | // If user specified additional start, use that |
396 | if (requestData.ContainsKey("start")) | 396 | if (requestData.ContainsKey("start")) |
397 | { | 397 | { |
398 | string startLoc = (string)requestData["start"]; | 398 | string startLoc = ((string)requestData["start"]).Trim(); |
399 | if (!(startLoc == "last" || startLoc == "home")) | 399 | if (!(startLoc == "last" || startLoc == "home")) |
400 | { | 400 | { |
401 | // Ignore it! Heh. | 401 | // Format: uri:Ahern&162&213&34 |
402 | try | ||
403 | { | ||
404 | string[] parts = startLoc.Remove(0, 4).Split('&'); | ||
405 | string region = parts[0]; | ||
406 | |||
407 | //////////////////////////////////////////////////// | ||
408 | //SimProfile SimInfo = new SimProfile(); | ||
409 | //SimInfo = SimInfo.LoadFromGrid(theUser.currentAgent.currentHandle, _config.GridServerURL, _config.GridSendKey, _config.GridRecvKey); | ||
410 | } | ||
411 | catch (Exception e) | ||
412 | { | ||
413 | |||
414 | } | ||
402 | } | 415 | } |
403 | } | 416 | } |
404 | 417 | ||