aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/libpq/auth.c15
-rw-r--r--src/backend/libpq/hba.c13
-rw-r--r--src/include/libpq/pqcomm.h4
-rw-r--r--src/interfaces/libpq/libpq-int.h4
4 files changed, 16 insertions, 20 deletions
diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c
index fe7bc3c9d1d..2fd417e6130 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 d12225ab0ea..f9e7898fb1a 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 c709553f69b..57a7e79696a 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 a681e72beed..bab52c390b3 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.