Dann Corbit wrote:
-----Original Message-----
From: Andrew Dunstan [mailto:and...@dunslane.net]
Sent: Tuesday, April 28, 2009 2:27 PM
To: Dann Corbit
Cc: pgsql-hackers@postgresql.org
Subject: Re: [HACKERS] Building Postgresql under Windows question
Dann Corbit wrote:
In this function:
static bool
test_postmaster_connection(bool do_checkpoint)
This code will never succeed:
snprintf(connstr, sizeof(connstr),
"dbname=postgres port=%s connect_timeout=5",
portstr);
for (i = 0; i < wait_seconds; i++)
{
if ((conn = PQconnectdb(connstr)) != NULL &&
(PQstatus(conn) == CONNECTION_OK ||
PQconnectionNeedsPassword(conn)))
{
PQfinish(conn);
success = true;
break;
}
Because pg_hba.conf has this:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
to allow connections from the local machine.
(A password is not needed to connect, so the code always fails).
Why won't
PQstatus(conn) == CONNECTION_OK
be true and thus the code will succeed without requiring a password?
It returns the value CONNECTION_STARTED
I have found a work-around for now.
If I set the method to password in pg_hba.conf, the service starts and
runs correctly.
It is only when the method is set to trust that we get 100% failures.
Then that looks like a libpq bug :-( According to the docs:
"The status can be one of a number of values. However, only two of these
are seen outside of an asynchronous connection procedure: CONNECTION_OK
and CONNECTION_BAD."
cheers
andrew
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers