diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/include/libpq/pqcomm.h | 3 | ||||
-rw-r--r-- | src/interfaces/libpq/fe-connect.c | 36 | ||||
-rw-r--r-- | src/interfaces/libpq/libpq-fe.h | 10 | ||||
-rw-r--r-- | src/interfaces/libpq/libpq-int.h | 4 |
4 files changed, 27 insertions, 26 deletions
diff --git a/src/include/libpq/pqcomm.h b/src/include/libpq/pqcomm.h index 047940b7adf..50118e4d94d 100644 --- a/src/include/libpq/pqcomm.h +++ b/src/include/libpq/pqcomm.h @@ -9,7 +9,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/libpq/pqcomm.h,v 1.103 2007/07/08 17:11:51 joe Exp $ + * $PostgreSQL: pgsql/src/include/libpq/pqcomm.h,v 1.104 2007/07/08 18:28:55 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -156,7 +156,6 @@ extern bool Db_user_namespace; #define AUTH_REQ_CRYPT 4 /* crypt password */ #define AUTH_REQ_MD5 5 /* md5 password */ #define AUTH_REQ_SCM_CREDS 6 /* transfer SCM credentials */ -#define AUTH_REQ_UNK 7 /* User has not yet attempted to authenticate */ typedef uint32 AuthRequest; diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index a19b444c593..5263099ba49 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.346 2007/07/08 17:11:51 joe Exp $ + * $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.347 2007/07/08 18:28:55 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1641,10 +1641,6 @@ keep_going: /* We will come back to here until there is return PGRES_POLLING_READING; } - /* save the authentication request type */ - if (conn->areq == AUTH_REQ_UNK) - conn->areq = areq; - /* Get the password salt if there is one. */ if (areq == AUTH_REQ_MD5) { @@ -1670,6 +1666,10 @@ keep_going: /* We will come back to here until there is */ conn->inStart = conn->inCursor; + /* Save the authentication request type, if first one. */ + if (conn->areq == AUTH_REQ_OK) + conn->areq = areq; + /* Respond to the request if necessary. */ /* @@ -1877,7 +1877,7 @@ makeEmptyPGconn(void) conn->std_strings = false; /* unless server says differently */ conn->verbosity = PQERRORS_DEFAULT; conn->sock = -1; - conn->areq = AUTH_REQ_UNK; + conn->areq = AUTH_REQ_OK; /* until we receive something else */ #ifdef USE_SSL conn->allow_ssl_try = true; conn->wait_ssl_try = false; @@ -3397,6 +3397,19 @@ PQbackendPID(const PGconn *conn) } int +PQconnectionUsedPassword(const PGconn *conn) +{ + if (!conn) + return false; + if (conn->areq == AUTH_REQ_MD5 || + conn->areq == AUTH_REQ_CRYPT || + conn->areq == AUTH_REQ_PASSWORD) + return true; + else + return false; +} + +int PQclientEncoding(const PGconn *conn) { if (!conn || conn->status != CONNECTION_OK) @@ -3446,17 +3459,6 @@ PQsetClientEncoding(PGconn *conn, const char *encoding) return status; } -bool -PQconnectionUsedPassword(const PGconn *conn) -{ - if (conn->areq == AUTH_REQ_MD5 || - conn->areq == AUTH_REQ_CRYPT || - conn->areq == AUTH_REQ_PASSWORD) - return true; - else - return false; -} - PGVerbosity PQsetErrorVerbosity(PGconn *conn, PGVerbosity verbosity) { diff --git a/src/interfaces/libpq/libpq-fe.h b/src/interfaces/libpq/libpq-fe.h index efda5a0049e..93dbeb37d8b 100644 --- a/src/interfaces/libpq/libpq-fe.h +++ b/src/interfaces/libpq/libpq-fe.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/interfaces/libpq/libpq-fe.h,v 1.137 2007/07/08 17:11:51 joe Exp $ + * $PostgreSQL: pgsql/src/interfaces/libpq/libpq-fe.h,v 1.138 2007/07/08 18:28:55 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -23,11 +23,10 @@ extern "C" #include <stdio.h> /* - * defines the backend's externally visible types, + * postgres_ext.h defines the backend's externally visible types, * such as Oid. */ #include "postgres_ext.h" -#include "postgres_fe.h" /* Application-visible enum types */ @@ -264,9 +263,9 @@ extern int PQserverVersion(const PGconn *conn); extern char *PQerrorMessage(const PGconn *conn); extern int PQsocket(const PGconn *conn); extern int PQbackendPID(const PGconn *conn); +extern int PQconnectionUsedPassword(const PGconn *conn); extern int PQclientEncoding(const PGconn *conn); extern int PQsetClientEncoding(PGconn *conn, const char *encoding); -extern bool PQconnectionUsedPassword(const PGconn *conn); /* Get the OpenSSL structure associated with a connection. Returns NULL for * unencrypted connections or if any other TLS library is in use. */ @@ -426,7 +425,8 @@ extern void PQfreemem(void *ptr); /* Exists for backward compatibility. bjm 2003-03-24 */ #define PQfreeNotify(ptr) PQfreemem(ptr) -/* Define the string so all uses are consistent. */ +/* Error when no password was given. */ +/* Note: depending on this is deprecated; use PQconnectionUsedPassword(). */ #define PQnoPasswordSupplied "fe_sendauth: no password supplied\n" /* diff --git a/src/interfaces/libpq/libpq-int.h b/src/interfaces/libpq/libpq-int.h index 12a9bd83a69..98080f2350a 100644 --- a/src/interfaces/libpq/libpq-int.h +++ b/src/interfaces/libpq/libpq-int.h @@ -12,7 +12,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/interfaces/libpq/libpq-int.h,v 1.120 2007/07/08 17:11:51 joe Exp $ + * $PostgreSQL: pgsql/src/interfaces/libpq/libpq-int.h,v 1.121 2007/07/08 18:28:56 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -299,7 +299,7 @@ struct pg_conn SockAddr raddr; /* Remote address */ ProtocolVersion pversion; /* FE/BE protocol version in use */ int sversion; /* server version, e.g. 70401 for 7.4.1 */ - AuthRequest areq; /* server demanded password during auth */ + AuthRequest areq; /* auth type demanded by server */ /* Transient state needed while establishing connection */ struct addrinfo *addrlist; /* list of possible backend addresses */ |