Increased Clientprefs error reporting and a rare leak on database connection failed.
Increased Clientprefs error reporting and a rare leak on database connection failed.
1.1 --- a/extensions/clientprefs/extension.cpp Thu Jul 31 21:08:00 2008 +0000
1.2 +++ b/extensions/clientprefs/extension.cpp Tue Aug 05 08:00:54 2008 +0000
1.3 @@ -227,8 +227,7 @@
1.4 TQueryOp *op = new TQueryOp(Query_CreateTable, 0);
1.5
1.6 op->SetDatabase(Database);
1.7 - op->SetCustomPreparedQuery
1.8 - (Database->PrepareQuery(
1.9 + IPreparedQuery *pQuery = Database->PrepareQuery(
1.10 "CREATE TABLE IF NOT EXISTS sm_cookies \
1.11 ( \
1.12 id INTEGER PRIMARY KEY AUTOINCREMENT, \
1.13 @@ -236,14 +235,22 @@
1.14 description varchar(255), \
1.15 access INTEGER \
1.16 )",
1.17 - error, sizeof(error), &errCode));
1.18 + error, sizeof(error), &errCode);
1.19 +
1.20 + if (pQuery == NULL)
1.21 + {
1.22 + g_pSM->LogMessage(myself, "Failed to prepare query CreateTable sm_cookies: %s (%i)", error, errCode);
1.23 + return;
1.24 + }
1.25 +
1.26 + op->SetCustomPreparedQuery(pQuery);
1.27
1.28 dbi->AddToThreadQueue(op, PrioQueue_High);
1.29
1.30 op = new TQueryOp(Query_CreateTable, 0);
1.31 op->SetDatabase(Database);
1.32 - op->SetCustomPreparedQuery
1.33 - (Database->PrepareQuery(
1.34 +
1.35 + pQuery = Database->PrepareQuery(
1.36 "CREATE TABLE IF NOT EXISTS sm_cookie_cache \
1.37 ( \
1.38 player varchar(65) NOT NULL, \
1.39 @@ -252,7 +259,15 @@
1.40 timestamp int, \
1.41 PRIMARY KEY (player, cookie_id) \
1.42 )",
1.43 - error, sizeof(error), &errCode));
1.44 + error, sizeof(error), &errCode);
1.45 +
1.46 + if (pQuery == NULL)
1.47 + {
1.48 + g_pSM->LogMessage(myself, "Failed to prepare query CreateTable sm_cookie_cache: %s (%i)", error, errCode);
1.49 + return;
1.50 + }
1.51 +
1.52 + op->SetCustomPreparedQuery(pQuery);
1.53
1.54 dbi->AddToThreadQueue(op, PrioQueue_High);
1.55 }
1.56 @@ -262,8 +277,8 @@
1.57
1.58 TQueryOp *op = new TQueryOp(Query_CreateTable, 0);
1.59 op->SetDatabase(Database);
1.60 - op->SetCustomPreparedQuery
1.61 - (Database->PrepareQuery(
1.62 +
1.63 + IPreparedQuery *pQuery = Database->PrepareQuery(
1.64 "CREATE TABLE IF NOT EXISTS sm_cookies \
1.65 ( \
1.66 id INTEGER unsigned NOT NULL auto_increment, \
1.67 @@ -272,14 +287,22 @@
1.68 access INTEGER, \
1.69 PRIMARY KEY (id) \
1.70 )",
1.71 - error, sizeof(error), &errCode));
1.72 + error, sizeof(error), &errCode);
1.73 +
1.74 + if (pQuery == NULL)
1.75 + {
1.76 + g_pSM->LogMessage(myself, "Failed to prepare query CreateTable sm_cookies: %s (%i)", error, errCode);
1.77 + return;
1.78 + }
1.79 +
1.80 + op->SetCustomPreparedQuery(pQuery);
1.81
1.82 dbi->AddToThreadQueue(op, PrioQueue_High);
1.83
1.84 op = new TQueryOp(Query_CreateTable, 0);
1.85 op->SetDatabase(Database);
1.86 - op->SetCustomPreparedQuery
1.87 - (Database->PrepareQuery(
1.88 +
1.89 + pQuery = Database->PrepareQuery(
1.90 "CREATE TABLE IF NOT EXISTS sm_cookie_cache \
1.91 ( \
1.92 player varchar(65) NOT NULL, \
1.93 @@ -288,7 +311,15 @@
1.94 timestamp int NOT NULL, \
1.95 PRIMARY KEY (player, cookie_id) \
1.96 )",
1.97 - error, sizeof(error), &errCode));
1.98 + error, sizeof(error), &errCode);
1.99 +
1.100 + if (pQuery == NULL)
1.101 + {
1.102 + g_pSM->LogMessage(myself, "Failed to prepare query CreateTable sm_cookie_cache: %s (%i)", error, errCode);
1.103 + return;
1.104 + }
1.105 +
1.106 + op->SetCustomPreparedQuery(pQuery);
1.107
1.108 dbi->AddToThreadQueue(op, PrioQueue_High);
1.109 }
1.110 @@ -308,11 +339,24 @@
1.111 "INSERT IGNORE INTO sm_cookies(name, description, access) \
1.112 VALUES(?, ?, ?)",
1.113 error, sizeof(error), &errCode);
1.114 +
1.115 + if (InsertCookieQuery == NULL)
1.116 + {
1.117 + g_pSM->LogMessage(myself, "Failed to prepare query InsertCookie: %s (%i)", error, errCode);
1.118 + return;
1.119 + }
1.120 +
1.121 InsertDataQuery = Database->PrepareQuery(
1.122 "INSERT INTO sm_cookie_cache(player, cookie_id, value, timestamp) \
1.123 VALUES(?, ?, ?, ?) \
1.124 ON DUPLICATE KEY UPDATE value = ?, timestamp = ?",
1.125 error, sizeof(error), &errCode);
1.126 +
1.127 + if (InsertDataQuery == NULL)
1.128 + {
1.129 + g_pSM->LogMessage(myself, "Failed to prepare query InsertData: %s (%i)", error, errCode);
1.130 + return;
1.131 + }
1.132 }
1.133 else
1.134 {
1.135 @@ -320,10 +364,23 @@
1.136 "INSERT OR IGNORE INTO sm_cookies(name, description, access) \
1.137 VALUES(?, ?, ?)",
1.138 error, sizeof(error), &errCode);
1.139 +
1.140 + if (InsertCookieQuery == NULL)
1.141 + {
1.142 + g_pSM->LogMessage(myself, "Failed to prepare query InsertCookie: %s (%i)", error, errCode);
1.143 + return;
1.144 + }
1.145 +
1.146 InsertDataQuery = Database->PrepareQuery(
1.147 "INSERT OR REPLACE INTO sm_cookie_cache(player, cookie_id, value, timestamp) \
1.148 VALUES(?, ?, ?, ?)",
1.149 error, sizeof(error), &errCode);
1.150 +
1.151 + if (InsertDataQuery == NULL)
1.152 + {
1.153 + g_pSM->LogMessage(myself, "Failed to prepare query InsertData: %s (%i)", error, errCode);
1.154 + return;
1.155 + }
1.156 }
1.157
1.158 SelectDataQuery = Database->PrepareQuery(
1.159 @@ -334,12 +391,24 @@
1.160 WHERE player = ?",
1.161 error, sizeof(error), &errCode);
1.162
1.163 + if (SelectDataQuery == NULL)
1.164 + {
1.165 + g_pSM->LogMessage(myself, "Failed to prepare query SelectData: %s (%i)", error, errCode);
1.166 + return;
1.167 + }
1.168 +
1.169 SelectIdQuery = Database->PrepareQuery(
1.170 "SELECT id \
1.171 FROM sm_cookies \
1.172 WHERE name=?",
1.173 error, sizeof(error), &errCode);
1.174
1.175 + if (SelectIdQuery == NULL)
1.176 + {
1.177 + g_pSM->LogMessage(myself, "Failed to prepare query SelectId: %s (%i)", error, errCode);
1.178 + return;
1.179 + }
1.180 +
1.181 databaseLoading = false;
1.182 cell_t result = 0;
1.183
1.184 @@ -369,6 +438,8 @@
1.185 return true;
1.186 }
1.187
1.188 + query->Destroy();
1.189 +
1.190 /* If Database is NULL and we're not in the loading phase it must have failed - Can't do much */
1.191 return false;
1.192 }
2.1 --- a/extensions/clientprefs/query.cpp Thu Jul 31 21:08:00 2008 +0000
2.2 +++ b/extensions/clientprefs/query.cpp Tue Aug 05 08:00:54 2008 +0000
2.3 @@ -117,6 +117,7 @@
2.4 {
2.5 return myself->GetIdentity();
2.6 }
2.7 +
2.8 void TQueryOp::Destroy()
2.9 {
2.10 delete this;
2.11 @@ -148,6 +149,7 @@
2.12 {
2.13 if (m_pQuery == NULL)
2.14 {
2.15 + g_pSM->LogError(myself, "Attempted to run with a NULL Query");
2.16 return false;
2.17 }
2.18