diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c index fe7bc3c9d1d0ecb5921f85b49398897b332a6089..2fd417e6130b33920379ea0ce02def9995d78cbd 100644 --- a/src/backend/libpq/auth.c +++ b/src/backend/libpq/auth.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/libpq/auth.c,v 1.57 2001/08/15 18:42:14 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/libpq/auth.c,v 1.58 2001/08/16 04:27:18 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -501,13 +501,16 @@ ClientAuthentication(Port *port) status = recv_and_check_password_packet(port); break; - case uaCrypt: - sendAuthRequest(port, AUTH_REQ_CRYPT); - status = recv_and_check_password_packet(port); - break; - case uaMD5: sendAuthRequest(port, AUTH_REQ_MD5); + if ((status = recv_and_check_password_packet(port)) == STATUS_OK) + break; + port->auth_method = uaCrypt; + /* Try crypt() for old client */ + /* FALL THROUGH */ + + case uaCrypt: + sendAuthRequest(port, AUTH_REQ_CRYPT); status = recv_and_check_password_packet(port); break; diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c index d12225ab0eae15ef5e508a1d9c5dcf73fb540b86..f9e7898fb1a59a78fe73dad1b71f8d809be6109b 100644 --- a/src/backend/libpq/hba.c +++ b/src/backend/libpq/hba.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/libpq/hba.c,v 1.62 2001/08/15 18:42:15 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/libpq/hba.c,v 1.63 2001/08/16 04:27:18 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -227,15 +227,8 @@ parse_hba_auth(List *line, ProtocolVersion proto, UserAuth *userauth_p, else if (strcmp(token, "reject") == 0) *userauth_p = uaReject; else if (strcmp(token, "crypt") == 0) - { - /* if the client supports it, use MD5 */ - if (PG_PROTOCOL_MAJOR(proto) > 2 || - (PG_PROTOCOL_MAJOR(proto) == 2 && - PG_PROTOCOL_MINOR(proto) >= 1)) - *userauth_p = uaMD5; - else - *userauth_p = uaCrypt; - } + /* Try MD5 first; on failure, switch to crypt() */ + *userauth_p = uaMD5; else *error_p = true; line = lnext(line); diff --git a/src/include/libpq/pqcomm.h b/src/include/libpq/pqcomm.h index c709553f69bd6206832b05ed6e2a1118ab383a3a..57a7e79696a4d4c50f43c7cec706ee618f2f6437 100644 --- a/src/include/libpq/pqcomm.h +++ b/src/include/libpq/pqcomm.h @@ -9,7 +9,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: pqcomm.h,v 1.56 2001/08/15 18:42:15 momjian Exp $ + * $Id: pqcomm.h,v 1.57 2001/08/16 04:27:18 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -90,7 +90,7 @@ typedef union SockAddr /* The earliest and latest frontend/backend protocol version supported. */ #define PG_PROTOCOL_EARLIEST PG_PROTOCOL(0,0) -#define PG_PROTOCOL_LATEST PG_PROTOCOL(2,1) +#define PG_PROTOCOL_LATEST PG_PROTOCOL(2,0) /* * All packets sent to the postmaster start with the length. This is omitted diff --git a/src/interfaces/libpq/libpq-int.h b/src/interfaces/libpq/libpq-int.h index a681e72beed6ae6e3dcb634a57b21e5192c72e23..bab52c390b394bb2f470d8f44556573b66974465 100644 --- a/src/interfaces/libpq/libpq-int.h +++ b/src/interfaces/libpq/libpq-int.h @@ -12,7 +12,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: libpq-int.h,v 1.37 2001/08/15 18:42:16 momjian Exp $ + * $Id: libpq-int.h,v 1.38 2001/08/16 04:27:18 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -45,7 +45,7 @@ * pqcomm.h describe what the backend knows, not what libpq knows. */ -#define PG_PROTOCOL_LIBPQ PG_PROTOCOL(2,1) +#define PG_PROTOCOL_LIBPQ PG_PROTOCOL(2,0) /* * POSTGRES backend dependent Constants.