Worked around an abnormal behaviour inside the Postgres client library.
git-svn-id: http://yate.null.ro/svn/yate/trunk@2245 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
parent
a535e6d799
commit
ef5e858958
|
@ -104,6 +104,8 @@ DbConn::DbConn(const NamedList* sect)
|
||||||
m_connection << " password='" << tmp << "'";
|
m_connection << " password='" << tmp << "'";
|
||||||
}
|
}
|
||||||
m_timeout = (u_int64_t)1000 * sect->getIntValue("timeout",10000);
|
m_timeout = (u_int64_t)1000 * sect->getIntValue("timeout",10000);
|
||||||
|
if (m_timeout < 500000)
|
||||||
|
m_timeout = 500000;
|
||||||
m_retry = sect->getIntValue("retry",5);
|
m_retry = sect->getIntValue("retry",5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -127,7 +129,9 @@ bool DbConn::initDb(int retry)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
PQsetnonblocking(m_conn,1);
|
PQsetnonblocking(m_conn,1);
|
||||||
|
Thread::msleep(1);
|
||||||
while (Time::now() < timeout) {
|
while (Time::now() < timeout) {
|
||||||
|
PQconnectPoll(m_conn);
|
||||||
switch (PQstatus(m_conn)) {
|
switch (PQstatus(m_conn)) {
|
||||||
case CONNECTION_BAD:
|
case CONNECTION_BAD:
|
||||||
Debug(&module,DebugWarn,"Connection for '%s' failed: %s",m_name.c_str(),PQerrorMessage(m_conn));
|
Debug(&module,DebugWarn,"Connection for '%s' failed: %s",m_name.c_str(),PQerrorMessage(m_conn));
|
||||||
|
@ -139,7 +143,6 @@ bool DbConn::initDb(int retry)
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
PQconnectPoll(m_conn);
|
|
||||||
Thread::yield();
|
Thread::yield();
|
||||||
}
|
}
|
||||||
Debug(&module,DebugWarn,"Connection timed out for '%s'",m_name.c_str());
|
Debug(&module,DebugWarn,"Connection timed out for '%s'",m_name.c_str());
|
||||||
|
|
Loading…
Reference in New Issue