diff --git a/lib/modules/Sql.pmod/pgsql.pike b/lib/modules/Sql.pmod/pgsql.pike index 61ec1dcfdd037f79f288d128f6f397b3f066a22c..8358616b369523ff867724962a82c42f9eefb504 100644 --- a/lib/modules/Sql.pmod/pgsql.pike +++ b/lib/modules/Sql.pmod/pgsql.pike @@ -1314,8 +1314,10 @@ private void procmessage() { }; if (err) { PD("Terminating processloop due to %s\n", describe_backtrace(err)); + _delayederror = err; } - catch(_connectfail(err)); + destruct(waitforauthready); + destruct(c); } //! Closes the connection to the database, any running queries are @@ -1357,15 +1359,6 @@ protected void destroy() { werror("%s\n", errstring); // Add missing terminating newline } -final void _connectfail(void|mixed err) { - if (err) { - PD("Connect failed %O\n", err); - _delayederror = err; - } - destruct(waitforauthready); - destruct(c); -} - //! For PostgreSQL this function performs the same function as @[resync()]. //! //! @seealso diff --git a/lib/modules/Sql.pmod/pgsql_util.pmod b/lib/modules/Sql.pmod/pgsql_util.pmod index 029862c0b0e46cde5f4c4e700f3b3cba7858a113..c3e6675681f13b2f66ae609fd22d017d5f7a55ab 100644 --- a/lib/modules/Sql.pmod/pgsql_util.pmod +++ b/lib/modules/Sql.pmod/pgsql_util.pmod @@ -334,7 +334,6 @@ class conxion { private int closenext; final sfile socket; - private function(void|mixed:void) connectfail; private int towrite; final multiset(function(void|mixed:void)) closecallbacks=(<>); @@ -458,7 +457,7 @@ outer: return; }; lock=0; - catch(connectfail()); + destruct(this); } final int close() { @@ -495,7 +494,6 @@ outer: socket->close(); }; } - catch(connectfail = 0); } final void connectloop(object pgsqlsess, int nossl) { @@ -534,19 +532,16 @@ outer: #endif break; } - connectfail=pgsqlsess->_connectfail; if(!socket->is_open()) error(strerror(socket->errno())+".\n"); socket->set_backend(local_backend); socket->set_buffer_mode(i,0); socket->set_nonblocking(i->read_cb,write_cb,close); - if (nossl != 2) { - connectfail=pgsqlsess->_connectfail; + if (nossl != 2) Thread.Thread(pgsqlsess->_processloop,this); - } return; }; - catch(connectfail(err)); + destruct(this); } private string _sprintf(int type, void|mapping flags) {