aboutsummaryrefslogtreecommitdiff
path: root/src/bin/psql/common.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2005-11-04 18:35:40 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2005-11-04 18:35:40 +0000
commitaf331e2526f1dbb23926877a324e4723879c2246 (patch)
treec9ad531a7526f42900940554140c7e53faf1d817 /src/bin/psql/common.c
parent081ed99b1e92cea0b964c0cfe65c4704540940a8 (diff)
downloadpostgresql-af331e2526f1dbb23926877a324e4723879c2246.tar.gz
postgresql-af331e2526f1dbb23926877a324e4723879c2246.zip
Ensure that we only create one ConsoleCtrlHandler per psql process,
so as to avoid performance issues and possible ultimate crash on long psql scripts. Per Merlin Moncure.
Diffstat (limited to 'src/bin/psql/common.c')
-rw-r--r--src/bin/psql/common.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c
index 1b01a97d885..bddbd7e539f 100644
--- a/src/bin/psql/common.c
+++ b/src/bin/psql/common.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2005, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/common.c,v 1.109 2005/10/27 13:34:47 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/common.c,v 1.110 2005/11/04 18:35:40 tgl Exp $
*/
#include "postgres_fe.h"
#include "common.h"
@@ -268,6 +268,7 @@ handle_sigint(SIGNAL_ARGS)
}
errno = save_errno; /* just in case the write changed it */
}
+
#else /* WIN32 */
static BOOL WINAPI
@@ -313,8 +314,16 @@ setup_win32_locks(void)
void
setup_cancel_handler(void)
{
- SetConsoleCtrlHandler(consoleHandler, TRUE);
+ static bool done = false;
+
+ /* only need one handler per process */
+ if (!done)
+ {
+ SetConsoleCtrlHandler(consoleHandler, TRUE);
+ done = true;
+ }
}
+
#endif /* WIN32 */