diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c
index 048f67c3013626ff0ed0a70263f3171e3e380e1e..1f60d13731e88b00ce2d4fe473260725700e91d7 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.60 2001/08/17 02:59:19 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/libpq/auth.c,v 1.61 2001/08/17 15:40:07 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -420,8 +420,8 @@ auth_failed(Port *port)
 			authmethod = "IDENT";
 			break;
 		case uaPassword:
-		case uaCrypt:
 		case uaMD5:
+		case uaCrypt:
 			authmethod = "Password";
 			break;
 	}
@@ -501,13 +501,13 @@ ClientAuthentication(Port *port)
 			status = recv_and_check_password_packet(port);
 			break;
 
-		case uaCrypt:
-			sendAuthRequest(port, AUTH_REQ_CRYPT);
+		case uaMD5:
+			sendAuthRequest(port, AUTH_REQ_MD5);
 			status = recv_and_check_password_packet(port);
 			break;
 
-		case uaMD5:
-			sendAuthRequest(port, AUTH_REQ_MD5);
+		case uaCrypt:
+			sendAuthRequest(port, AUTH_REQ_CRYPT);
 			status = recv_and_check_password_packet(port);
 			break;
 
@@ -643,8 +643,8 @@ map_old_to_new(Port *port, UserAuth old, int status)
 {
 	switch (port->auth_method)
 	{
-		case uaCrypt:
 		case uaMD5:
+		case uaCrypt:
 		case uaReject:
 			status = STATUS_ERROR;
 			break;
diff --git a/src/backend/libpq/crypt.c b/src/backend/libpq/crypt.c
index 5a54bde4b6b034b527ff85a7216b98f7794845a6..8f2a1f924392b18edf412627f077a0cfd6bb1994 100644
--- a/src/backend/libpq/crypt.c
+++ b/src/backend/libpq/crypt.c
@@ -9,7 +9,7 @@
  * Dec 17, 1997 - Todd A. Brandys
  *	Orignal Version Completed.
  *
- * $Id: crypt.c,v 1.36 2001/08/17 03:09:31 momjian Exp $
+ * $Id: crypt.c,v 1.37 2001/08/17 15:40:07 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -294,13 +294,6 @@ md5_crypt_verify(const Port *port, const char *user, const char *pgpass)
 	 */
 	switch (port->auth_method)
 	{
-		case uaCrypt:
-		{
-			char salt[3];
-			StrNCpy(salt, port->cryptSalt,3);
-			crypt_pwd = crypt(passwd, salt);
-			break;
-		}
 		case uaMD5:
 			crypt_pwd = palloc(MD5_PASSWD_LEN+1);
 			if (isMD5(passwd))
@@ -334,6 +327,13 @@ md5_crypt_verify(const Port *port, const char *user, const char *pgpass)
 				pfree(crypt_pwd2);
 			}
 			break;
+		case uaCrypt:
+		{
+			char salt[3];
+			StrNCpy(salt, port->cryptSalt,3);
+			crypt_pwd = crypt(passwd, salt);
+			break;
+		}
 		default:
 			crypt_pwd = passwd;
 			break;
diff --git a/src/interfaces/libpq/fe-auth.c b/src/interfaces/libpq/fe-auth.c
index 6c8f8492eafa04e9fbeccc4a539f57aa7af714e7..e26a9c271bad9054861cdc9c2d4ac0dc373f3fb5 100644
--- a/src/interfaces/libpq/fe-auth.c
+++ b/src/interfaces/libpq/fe-auth.c
@@ -10,7 +10,7 @@
  * exceed INITIAL_EXPBUFFER_SIZE (currently 256 bytes).
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-auth.c,v 1.54 2001/08/17 15:11:15 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-auth.c,v 1.55 2001/08/17 15:40:07 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -438,6 +438,33 @@ pg_password_sendauth(PGconn *conn, const char *password, AuthRequest areq)
 
 	switch (areq)
 	{
+		case AUTH_REQ_MD5:
+		{
+			char *crypt_pwd2;
+
+			if (!(crypt_pwd = malloc(MD5_PASSWD_LEN+1)) ||
+				!(crypt_pwd2 = malloc(MD5_PASSWD_LEN+1)))
+			{
+				perror("malloc");
+				return STATUS_ERROR;
+			}
+			if (!EncryptMD5(password, conn->pguser,
+							strlen(conn->pguser), crypt_pwd2))
+			{
+				free(crypt_pwd);
+				free(crypt_pwd2);
+				return STATUS_ERROR;
+			}
+			if (!EncryptMD5(crypt_pwd2 + strlen("md5"), conn->md5Salt,
+							sizeof(conn->md5Salt), crypt_pwd))
+			{
+				free(crypt_pwd);
+				free(crypt_pwd2);
+				return STATUS_ERROR;
+			}
+			free(crypt_pwd2);
+			break;
+		}
 		case AUTH_REQ_CRYPT:
 		{
 			char salt[3];
@@ -446,33 +473,6 @@ pg_password_sendauth(PGconn *conn, const char *password, AuthRequest areq)
 			crypt_pwd = crypt(password, salt);
 			break;
 		}
-		case AUTH_REQ_MD5:
-			{
-				char *crypt_pwd2;
-
-				if (!(crypt_pwd = malloc(MD5_PASSWD_LEN+1)) ||
-					!(crypt_pwd2 = malloc(MD5_PASSWD_LEN+1)))
-				{
-					perror("malloc");
-					return STATUS_ERROR;
-				}
-				if (!EncryptMD5(password, conn->pguser,
-								strlen(conn->pguser), crypt_pwd2))
-				{
-					free(crypt_pwd);
-					free(crypt_pwd2);
-					return STATUS_ERROR;
-				}
-				if (!EncryptMD5(crypt_pwd2 + strlen("md5"), conn->md5Salt,
-								sizeof(conn->md5Salt), crypt_pwd))
-				{
-					free(crypt_pwd);
-					free(crypt_pwd2);
-					return STATUS_ERROR;
-				}
-				free(crypt_pwd2);
-				break;
-			}
 		default:
 			/* discard const so we can assign it */
 			crypt_pwd = (char *)password;
@@ -535,9 +535,9 @@ fe_sendauth(AuthRequest areq, PGconn *conn, const char *hostname,
 			return STATUS_ERROR;
 #endif
 
-		case AUTH_REQ_PASSWORD:
-		case AUTH_REQ_CRYPT:
 		case AUTH_REQ_MD5:
+		case AUTH_REQ_CRYPT:
+		case AUTH_REQ_PASSWORD:
 			if (password == NULL || *password == '\0')
 			{
 				(void) sprintf(PQerrormsg,