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);
 }