enum SQLstatus
{
+ // The connection has died.
+ DEAD,
+
// Connecting and wants read event.
CREAD,
status = CREAD;
return true;
case PGRES_POLLING_FAILED:
+ SocketEngine::ChangeEventMask(this, FD_WANT_NO_READ | FD_WANT_NO_WRITE);
+ status = DEAD;
return false;
case PGRES_POLLING_OK:
SocketEngine::ChangeEventMask(this, FD_WANT_POLL_READ | FD_WANT_NO_WRITE);
{
DoPoll();
}
- else
+ else if (status == WREAD || status == WWRITE)
{
DoConnectedPoll();
}
void Close()
{
+ status = DEAD;
SocketEngine::DelFd(this);
if(sql)
void SQLConn::DelayReconnect()
{
+ status = DEAD;
ModulePgSQL* mod = (ModulePgSQL*)(Module*)creator;
ConnMap::iterator it = mod->connections.find(conf->getString("id"));
if (it != mod->connections.end())