From e12e2f09967bd1fb8bd9c73c736988c9479bc018 Mon Sep 17 00:00:00 2001
From: "Stephen R. van den Berg" <srb@cuci.nl>
Date: Thu, 11 Dec 2014 11:16:54 +0100
Subject: [PATCH] pgsql: Explicitly dislodge read mutex upon fd close.

---
 lib/modules/Sql.pmod/pgsql_util.pmod | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/lib/modules/Sql.pmod/pgsql_util.pmod b/lib/modules/Sql.pmod/pgsql_util.pmod
index 36510df795..bea81db261 100644
--- a/lib/modules/Sql.pmod/pgsql_util.pmod
+++ b/lib/modules/Sql.pmod/pgsql_util.pmod
@@ -333,15 +333,18 @@ outer:
 
   final void sendterminate() {
     Thread.MutexKey lock=i->fillreadmux->lock();
-    i->fillread.signal();
-    i->fillread=0;	 // Delayed close() after flushing the output buffer
+    if(i->fillread)	 // Delayed close() after flushing the output buffer
+      i->fillread.signal(), i->fillread=0;
     lock=0;
   }
 
   final int close() {
+    int ret;
     destruct(nostash);
     PD("%d>Close socket\n",socket->query_fd());
-    return socket->close();
+    ret=socket->close();
+    sendterminate();
+    return ret;
   }
 
   protected void destroy() {
-- 
GitLab