]> jfr.im git - irc/quakenet/newserv.git/commitdiff
TROJANSCAN: add a ping every 60s to try to prevent mysql dropping the connection...
authorChris Porter <redacted>
Wed, 14 Dec 2011 15:58:16 +0000 (15:58 +0000)
committerChris Porter <redacted>
Wed, 14 Dec 2011 15:58:16 +0000 (15:58 +0000)
trojanscan/trojanscan.c

index 816ec1d037102dd820640ec31df2a3f448cf9144..75622e37c2473a9a650d184953153089d3461cf6 100644 (file)
@@ -41,6 +41,8 @@ static char *versionreply;
 static int hooksregistered = 0;
 static void *trojanscan_connect_nick_schedule;
 
+static void *db_ping_schedule;
+
 void _init() {
   trojanscan_cmds = newcommandtree();
 
@@ -129,6 +131,7 @@ void _fini(void) {
 
   for (i=0;i<trojanscan_tailpoolsize;i++)
     freesstring(trojanscan_tailpool[i]);
+
   trojanscan_database_close();
 
   deletecommandfromtree(trojanscan_cmds, "showcommands", &trojanscan_showcommands);
@@ -2510,7 +2513,14 @@ void trojanscan_generaterealname(char *buf, int maxsize) {
     strlcpy(buf, np->realname->name->content, maxsize + 1);
 }
 
+static void db_ping(void *arg) {
+  trojanscan_database_query("SELECT 1");
+}
+
 void trojanscan_database_close(void) {
+  if(db_ping_schedule)
+    deleteschedule(db_ping_schedule, db_ping, NULL);
+
   mysql_close(&trojanscan_sql);
 }
 
@@ -2518,6 +2528,10 @@ int trojanscan_database_connect(char *dbhost, char *dbuser, char *dbpass, char *
   mysql_init(&trojanscan_sql);
   if (!mysql_real_connect(&trojanscan_sql, dbhost, dbuser, dbpass, db, port, NULL, 0))
     return -1;
+
+
+  db_ping_schedule = scheduleoneshot(time(NULL) + 60, &db_ping, NULL);
+
   return 0;
 }