From 25762c2830763ea411be52162199726834d541c0 Mon Sep 17 00:00:00 2001 From: Anastasia Date: Fri, 1 Sep 2017 11:51:49 +0300 Subject: [PATCH] add check for interrupt in prompt for password --- src/backup.c | 3 +-- src/utils/pgut.c | 10 +++++++--- src/utils/pgut.h | 3 +-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/backup.c b/src/backup.c index 0ed50e0b..9af234df 100644 --- a/src/backup.c +++ b/src/backup.c @@ -447,8 +447,7 @@ do_backup(void) elog(ERROR, "Options for connection to master must be provided to perform backup from replica"); /* Create connection to master server */ - master_conn = pgut_connect_extended(master_host, master_port, - master_db, master_user, password); + master_conn = pgut_connect_extended(master_host, master_port, master_db, master_user); } /* Get exclusive lock of backup catalog */ diff --git a/src/utils/pgut.c b/src/utils/pgut.c index afc409b2..d607605e 100644 --- a/src/utils/pgut.c +++ b/src/utils/pgut.c @@ -1015,12 +1015,12 @@ prompt_for_password(const char *username) PGconn * pgut_connect(const char *dbname) { - return pgut_connect_extended(host, port, dbname, username, password); + return pgut_connect_extended(host, port, dbname, username); } PGconn * pgut_connect_extended(const char *pghost, const char *pgport, - const char *dbname, const char *login, const char *pwd) + const char *dbname, const char *login) { PGconn *conn; @@ -1031,7 +1031,7 @@ pgut_connect_extended(const char *pghost, const char *pgport, for (;;) { conn = PQsetdbLogin(pghost, pgport, NULL, NULL, - dbname, login, pwd); + dbname, login, password); if (PQstatus(conn) == CONNECTION_OK) return conn; @@ -1040,6 +1040,10 @@ pgut_connect_extended(const char *pghost, const char *pgport, { PQfinish(conn); prompt_for_password(username); + + if (interrupted) + elog(ERROR, "interrupted"); + continue; } elog(ERROR, "could not connect to database %s: %s", diff --git a/src/utils/pgut.h b/src/utils/pgut.h index 5ec40589..240a4596 100644 --- a/src/utils/pgut.h +++ b/src/utils/pgut.h @@ -117,8 +117,7 @@ extern void pgut_atexit_pop(pgut_atexit_callback callback, void *userdata); */ extern PGconn *pgut_connect(const char *dbname); extern PGconn *pgut_connect_extended(const char *pghost, const char *pgport, - const char *dbname, const char *login, - const char *pwd); + const char *dbname, const char *login); extern void pgut_disconnect(PGconn *conn); extern PGresult *pgut_execute(PGconn* conn, const char *query, int nParams, const char **params); extern bool pgut_send(PGconn* conn, const char *query, int nParams, const char **params, int elevel);