aboutsummaryrefslogtreecommitdiff
path: root/src/backend/libpq/auth.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/libpq/auth.c')
-rw-r--r--src/backend/libpq/auth.c105
1 files changed, 54 insertions, 51 deletions
diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c
index 58c60112e1c..b0891e4c5f2 100644
--- a/src/backend/libpq/auth.c
+++ b/src/backend/libpq/auth.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/libpq/auth.c,v 1.23 1998/01/27 03:24:54 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/libpq/auth.c,v 1.24 1998/01/29 03:23:05 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@@ -390,9 +390,6 @@ void auth_failed(Port *port)
*/
void be_recvauth(Port *port)
{
- AuthRequest areq;
- void (*auth_handler)();
-
/*
* Get the authentication method to use for this frontend/database
* combination.
@@ -400,70 +397,76 @@ void be_recvauth(Port *port)
if (hba_getauthmethod(&port->raddr, port->database, port->auth_arg,
&port->auth_method) != STATUS_OK)
- {
PacketSendError(&port->pktInfo, "Missing or mis-configured pg_hba.conf file");
- return;
- }
- /* Handle old style authentication. */
-
- if (PG_PROTOCOL_MAJOR(port->proto) == 0)
+ else if (PG_PROTOCOL_MAJOR(port->proto) == 0)
{
+ /* Handle old style authentication. */
+
if (old_be_recvauth(port) != STATUS_OK)
auth_failed(port);
-
- return;
}
-
- /* Handle new style authentication. */
-
- switch (port->auth_method)
+ else
{
- case uaReject:
- auth_failed(port);
- return;
-
- case uaKrb4:
- areq = AUTH_REQ_KRB4;
- auth_handler = handle_krb4_auth;
- break;
+ AuthRequest areq;
+ void (*auth_handler)();
- case uaKrb5:
- areq = AUTH_REQ_KRB5;
- auth_handler = handle_krb5_auth;
- break;
+ /* Keep the compiler quiet. */
- case uaTrust:
areq = AUTH_REQ_OK;
- auth_handler = handle_done_auth;
- break;
- case uaIdent:
- if (authident(&port->raddr.in, &port->laddr.in, port->user,
- port->auth_arg) != STATUS_OK)
+ /* Handle new style authentication. */
+
+ auth_handler = NULL;
+
+ switch (port->auth_method)
{
- auth_failed(port);
- return;
- }
+ case uaReject:
+ break;
+
+ case uaKrb4:
+ areq = AUTH_REQ_KRB4;
+ auth_handler = handle_krb4_auth;
+ break;
- areq = AUTH_REQ_OK;
- auth_handler = handle_done_auth;
- break;
+ case uaKrb5:
+ areq = AUTH_REQ_KRB5;
+ auth_handler = handle_krb5_auth;
+ break;
- case uaPassword:
- areq = AUTH_REQ_PASSWORD;
- auth_handler = handle_password_auth;
- break;
+ case uaTrust:
+ areq = AUTH_REQ_OK;
+ auth_handler = handle_done_auth;
+ break;
- case uaCrypt:
- areq = AUTH_REQ_CRYPT;
- auth_handler = handle_password_auth;
- break;
- }
+ case uaIdent:
+ if (authident(&port->raddr.in, &port->laddr.in,
+ port->user, port->auth_arg) == STATUS_OK)
+ {
+ areq = AUTH_REQ_OK;
+ auth_handler = handle_done_auth;
+ }
+
+ break;
- /* Tell the frontend what we want next. */
+ case uaPassword:
+ areq = AUTH_REQ_PASSWORD;
+ auth_handler = handle_password_auth;
+ break;
- sendAuthRequest(port, areq, auth_handler);
+ case uaCrypt:
+ areq = AUTH_REQ_CRYPT;
+ auth_handler = handle_password_auth;
+ break;
+ }
+
+ /* Tell the frontend what we want next. */
+
+ if (auth_handler != NULL)
+ sendAuthRequest(port, areq, auth_handler);
+ else
+ auth_failed(port);
+ }
}