Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit bd05ad8

Browse files
committed
Give nicer error message when connecting to a v10 server requiring SCRAM.
This is just to give the user a hint that they need to upgrade, if they try to connect to a v10 server that uses SCRAM authentication, with an older client. Commit to all stable branches, but not master. Discussion: https://www.postgresql.org/message-id/bbf45d92-3896-eeb7-7399-2111d517261b@pivotal.io
1 parent 071d133 commit bd05ad8

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

src/include/libpq/pqcomm.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,8 @@ extern bool Db_user_namespace;
172172
#define AUTH_REQ_GSS 7 /* GSSAPI without wrap() */
173173
#define AUTH_REQ_GSS_CONT 8 /* Continue GSS exchanges */
174174
#define AUTH_REQ_SSPI 9 /* SSPI negotiate without wrap() */
175+
#define AUTH_REQ_SASL 10 /* SASL authentication. Not supported before
176+
* libpq version 10. */
175177

176178
typedef uint32 AuthRequest;
177179

src/interfaces/libpq/fe-auth.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -703,6 +703,19 @@ pg_fe_sendauth(AuthRequest areq, PGconn *conn)
703703
return STATUS_ERROR;
704704
break;
705705

706+
/*
707+
* SASL authentication was introduced in version 10. Older
708+
* versions recognize the request only to give a nicer error
709+
* message. We call it "SCRAM authentication" in the error, rather
710+
* than SASL, because SCRAM is more familiar to users, and it's
711+
* the only SASL authentication mechanism that has been
712+
* implemented as of this writing, anyway.
713+
*/
714+
case AUTH_REQ_SASL:
715+
printfPQExpBuffer(&conn->errorMessage,
716+
libpq_gettext("SCRAM authentication requires libpq version 10 or above\n"));
717+
return STATUS_ERROR;
718+
706719
default:
707720
printfPQExpBuffer(&conn->errorMessage,
708721
libpq_gettext("authentication method %u not supported\n"), areq);

0 commit comments

Comments
 (0)