From c4abb08b4696d4ab1a0e2143ef4a8c71ec5aa7b2 Mon Sep 17 00:00:00 2001
From: "Stephen R. van den Berg" <srb@cuci.nl>
Date: Sat, 15 Oct 2016 11:30:56 +0200
Subject: [PATCH] pgsql: Cater for callbacks waiting for mutex while being
 destructed.

---
 lib/modules/Sql.pmod/pgsql_util.pmod | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/lib/modules/Sql.pmod/pgsql_util.pmod b/lib/modules/Sql.pmod/pgsql_util.pmod
index 74d872aa4f..46b06ad429 100644
--- a/lib/modules/Sql.pmod/pgsql_util.pmod
+++ b/lib/modules/Sql.pmod/pgsql_util.pmod
@@ -284,14 +284,13 @@ class conxion {
 
   private int write_cb() {
     Thread.MutexKey lock = shortmux->lock();
-    towrite -= output_to(socket,towrite);
-    lock = 0;
-#ifdef PG_DEBUG
-    if (!i->fillread)
-      PD("%d>Delayed close to go %d\n", socket->query_fd(), sizeof(this));
-#endif
-    if (!i->fillread && !sizeof(this))
-      close();
+    if (this) {
+      towrite -= output_to(socket, towrite);
+      lock = 0;
+      if (!i->fillread && !sizeof(this))
+        close();
+    } else
+      lock = 0;
     return 0;
   }
 
-- 
GitLab