From 10244160adc19b3837db9983994833b30db4b263 Mon Sep 17 00:00:00 2001
From: "Stephen R. van den Berg" <srb@cuci.nl>
Date: Wed, 17 Feb 2016 23:36:36 +0100
Subject: [PATCH] pgsql: Shortcut to close descriptors when in a destructed
 object.

---
 lib/modules/Sql.pmod/pgsql.pike | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/lib/modules/Sql.pmod/pgsql.pike b/lib/modules/Sql.pmod/pgsql.pike
index c8dacbe3b3..f15ab7efa1 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);
 }
 
-- 
GitLab