diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/bin/pg_basebackup/pg_receivewal.c | 12 | ||||
-rw-r--r-- | src/bin/pg_basebackup/pg_recvlogical.c | 22 |
2 files changed, 20 insertions, 14 deletions
diff --git a/src/bin/pg_basebackup/pg_receivewal.c b/src/bin/pg_basebackup/pg_receivewal.c index f39c1339d72..1bb689dd7ce 100644 --- a/src/bin/pg_basebackup/pg_receivewal.c +++ b/src/bin/pg_basebackup/pg_receivewal.c @@ -676,10 +676,6 @@ main(int argc, char **argv) close_destination_dir(dir, basedir); } -#ifndef WIN32 - pqsignal(SIGINT, sigint_handler); -#endif - /* * Obtain a connection before doing anything. */ @@ -690,6 +686,14 @@ main(int argc, char **argv) atexit(disconnect_atexit); /* + * Trap signals. (Don't do this until after the initial password prompt, + * if one is needed, in GetConnection.) + */ +#ifndef WIN32 + pqsignal(SIGINT, sigint_handler); +#endif + + /* * Run IDENTIFY_SYSTEM to make sure we've successfully have established a * replication connection and haven't connected using a database specific * connection. diff --git a/src/bin/pg_basebackup/pg_recvlogical.c b/src/bin/pg_basebackup/pg_recvlogical.c index e153390f5e3..3877b5c7aa2 100644 --- a/src/bin/pg_basebackup/pg_recvlogical.c +++ b/src/bin/pg_basebackup/pg_recvlogical.c @@ -214,8 +214,6 @@ StreamLogicalLog(void) output_written_lsn = InvalidXLogRecPtr; output_fsync_lsn = InvalidXLogRecPtr; - query = createPQExpBuffer(); - /* * Connect in replication mode to the server */ @@ -234,6 +232,7 @@ StreamLogicalLog(void) replication_slot); /* Initiate the replication stream at specified location */ + query = createPQExpBuffer(); appendPQExpBuffer(query, "START_REPLICATION SLOT \"%s\" LOGICAL %X/%X", replication_slot, (uint32) (startpos >> 32), (uint32) startpos); @@ -922,15 +921,9 @@ main(int argc, char **argv) exit(1); } -#ifndef WIN32 - pqsignal(SIGINT, sigint_handler); - pqsignal(SIGHUP, sighup_handler); -#endif - /* - * Obtain a connection to server. This is not really necessary but it - * helps to get more precise error messages about authentication, required - * GUC parameters and such. + * Obtain a connection to server. Notably, if we need a password, we want + * to collect it from the user immediately. */ conn = GetConnection(); if (!conn) @@ -939,6 +932,15 @@ main(int argc, char **argv) atexit(disconnect_atexit); /* + * Trap signals. (Don't do this until after the initial password prompt, + * if one is needed, in GetConnection.) + */ +#ifndef WIN32 + pqsignal(SIGINT, sigint_handler); + pqsignal(SIGHUP, sighup_handler); +#endif + + /* * Run IDENTIFY_SYSTEM to make sure we connected using a database specific * replication connection. */ |