From 1412aecd2bf9130b14f8873ba2ba45ac5e6b4c5d Mon Sep 17 00:00:00 2001 From: "Stephen R. van den Berg" <srb@cuci.nl> Date: Fri, 18 Sep 2015 17:31:03 +0200 Subject: [PATCH] pgsql: Avoid race during failed connects. --- lib/modules/Sql.pmod/pgsql.pike | 7 ++++--- lib/modules/Sql.pmod/pgsql_util.pmod | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/modules/Sql.pmod/pgsql.pike b/lib/modules/Sql.pmod/pgsql.pike index 44d55d4e99..4984407c5e 100644 --- a/lib/modules/Sql.pmod/pgsql.pike +++ b/lib/modules/Sql.pmod/pgsql.pike @@ -617,9 +617,10 @@ final void _processloop(.pgsql_util.conxion ci) { _connectfail(); else destruct(waitforauthready); - } else // Do not flush at this point, PostgreSQL 9.4 disapproves - procmessage(); - } + return; + } + } // Do not flush at this point, PostgreSQL 9.4 disapproves + procmessage(); } private void procmessage() { diff --git a/lib/modules/Sql.pmod/pgsql_util.pmod b/lib/modules/Sql.pmod/pgsql_util.pmod index cd4aeef354..1bb6250fee 100644 --- a/lib/modules/Sql.pmod/pgsql_util.pmod +++ b/lib/modules/Sql.pmod/pgsql_util.pmod @@ -392,10 +392,10 @@ outer: } if(!socket->is_open()) error(strerror(socket->errno())); + connectfail=pgsqlsess->_connectfail; socket->set_backend(local_backend); socket->set_buffer_mode(i,0); socket->set_nonblocking(i->read_cb,write_cb,close); - connectfail=pgsqlsess->_connectfail; Thread.Thread(pgsqlsess->_processloop,this); return; }; -- GitLab