diff --git a/lib/modules/Sql.pmod/pgsql.pike b/lib/modules/Sql.pmod/pgsql.pike index c8dacbe3b32ed7d5332f775bc853ec55c9578c51..f15ab7efa1e8021e6a711e3f3d27da189cf404e2 100644 --- a/lib/modules/Sql.pmod/pgsql.pike +++ b/lib/modules/Sql.pmod/pgsql.pike @@ -1179,9 +1179,12 @@ private void procmessage() { } break; } + if(!this) { // Already destructed + ci->close(); // So close descriptors only + return; + } PD("Closing database processloop %O\n",err); - if(this) - _delayederror=err; + _delayederror=err; for(;objectp(portal);portal=qportals->read()) if(objectp(portal)) { #ifdef PG_DEBUG @@ -1191,9 +1194,9 @@ private void procmessage() { } if(!ci->close() && !terminating && _options.reconnect) _connectfail(); - else if(this) + else destruct(waitforauthready); - if(this && err && !stringp(err)) + if(err && !stringp(err)) throw(err); }