summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpeavey <peavey@e03df62e-2008-0410-955e-edbf42e46eb7>2007-01-12 05:19:50 +0000
committerpeavey <peavey@e03df62e-2008-0410-955e-edbf42e46eb7>2007-01-12 05:19:50 +0000
commit557de97a72b13eb60d77bfbf5ad679990d0ef5f8 (patch)
tree6437c20b6b84fde8675a19d3a77824f29809dde1
parent76ef4a17de34b7e8a9b6b3687f8a12a65fe28105 (diff)
Improve handling of backend server being down. Also decraq some debug output that was really confusing me.
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6301 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r--src/modules/extra/m_pgsql.cpp32
1 files changed, 16 insertions, 16 deletions
diff --git a/src/modules/extra/m_pgsql.cpp b/src/modules/extra/m_pgsql.cpp
index c3fb1c9ad..d702b9c34 100644
--- a/src/modules/extra/m_pgsql.cpp
+++ b/src/modules/extra/m_pgsql.cpp
@@ -90,11 +90,10 @@ std::string SQLhost::GetDSN()
class ReconnectTimer : public InspTimer
{
private:
- SQLConn* conn;
Module* mod;
public:
- ReconnectTimer(InspIRCd* SI, SQLConn* c, Module* m)
- : InspTimer(5, SI->Time(), false), conn(c), mod(m)
+ ReconnectTimer(InspIRCd* SI, Module* m)
+ : InspTimer(5, SI->Time(), false), mod(m)
{
}
virtual void Tick(time_t TIME);
@@ -477,7 +476,6 @@ class SQLConn : public EventHandler
if(!DoConnect())
{
Instance->Log(DEFAULT, "WARNING: Could not connect to database with id: " + ConvToStr(hi.id));
- Close();
DelayReconnect();
}
}
@@ -500,7 +498,6 @@ class SQLConn : public EventHandler
break;
case EVENT_ERROR:
- Close();
DelayReconnect();
break;
@@ -550,7 +547,6 @@ class SQLConn : public EventHandler
}
/* Socket all hooked into the engine, now to tell PgSQL to start connecting */
-
return DoPoll();
}
@@ -676,9 +672,8 @@ class SQLConn : public EventHandler
* Returning true so the core doesn't try and close the connection.
*/
Instance->Log(DEBUG, "PQconsumeInput failed: %s", PQerrorMessage(sql));
- Close();
DelayReconnect();
- return false;
+ return true;
}
}
@@ -769,11 +764,7 @@ class SQLConn : public EventHandler
return DoEvent();
}
- void DelayReconnect()
- {
- ReconnectTimer* timer = new ReconnectTimer(Instance, this, us);
- Instance->Timers->AddTimer(timer);
- }
+ void DelayReconnect();
bool DoEvent()
{
@@ -952,7 +943,7 @@ class SQLConn : public EventHandler
}
}
else {
- Instance->Log(DEBUG, "PQsocket cant be removed from socket engine!");
+ Instance->Log(DEBUG, "PQsocket removed from socket engine!");
}
if(sql)
@@ -970,6 +961,7 @@ class ModulePgSQL : public Module
ConnMap connections;
unsigned long currid;
char* sqlsuccess;
+ ReconnectTimer* retimer;
public:
ModulePgSQL(InspIRCd* Me)
@@ -993,6 +985,8 @@ class ModulePgSQL : public Module
virtual ~ModulePgSQL()
{
+ if (retimer)
+ ServerInstance->Timers->DelTimer(retimer);
ClearAllConnections();
delete[] sqlsuccess;
ServerInstance->UnpublishInterface("SQL", this);
@@ -1146,7 +1140,8 @@ class ModulePgSQL : public Module
break;
}
}
- ReadConf();
+ retimer = new ReconnectTimer(ServerInstance, this);
+ ServerInstance->Timers->AddTimer(retimer);
}
virtual char* OnRequest(Request* request)
@@ -1218,7 +1213,12 @@ void SQLresolver::OnLookupComplete(const std::string &result, unsigned int ttl,
void ReconnectTimer::Tick(time_t time)
{
- ((ModulePgSQL*)mod)->ReconnectConn(conn);
+ ((ModulePgSQL*)mod)->ReadConf();
+}
+
+void SQLConn::DelayReconnect()
+{
+ ((ModulePgSQL*)us)->ReconnectConn(this);
}