OSDN Git Service

Remove protocol version change. Try MD5 first, then crypt() on all clients.
authorBruce Momjian <bruce@momjian.us>
Thu, 16 Aug 2001 04:27:18 +0000 (04:27 +0000)
committerBruce Momjian <bruce@momjian.us>
Thu, 16 Aug 2001 04:27:18 +0000 (04:27 +0000)
src/backend/libpq/auth.c
src/backend/libpq/hba.c
src/include/libpq/pqcomm.h
src/interfaces/libpq/libpq-int.h

index fe7bc3c..2fd417e 100644 (file)
@@ -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;
 
index d12225a..f9e7898 100644 (file)
@@ -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);
index c709553..57a7e79 100644 (file)
@@ -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
index a681e72..bab52c3 100644 (file)
@@ -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.