On 08.01.2012 22:18, Ryan Kelly wrote:
@@ -1570,7 +1570,13 @@ do_connect(char *dbname, char *user, char *host, char 
*port)
                keywords[7] = NULL;
                values[7] = NULL;

-               n_conn = PQconnectdbParams(keywords, values, true);
+               if (sigsetjmp(sigint_interrupt_jmp, 1) != 0) {
+                       /* got here with longjmp */
+               } else {
+                       sigint_interrupt_enabled = true;
+                       n_conn = PQconnectdbParams(keywords, values, true);
+                       sigint_interrupt_enabled = false;
+               }

                free(keywords);
                free(values);

That assumes that it's safe to longjmp out of PQconnectdbParams at any instant. It's not. I think you'd need to use the asynchronous connection functions PQconnectStartParams() and PQconnectPoll(), and select().

--
  Heikki Linnakangas
  EnterpriseDB   http://www.enterprisedb.com

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to