diff --git a/lib/modules/Sql.pmod/pgsql.pike b/lib/modules/Sql.pmod/pgsql.pike
index 30c93353f0a8f1a1b5fe6732c4e3cfd4c956092f..afcf57d3913b0b7804952ec4c2ed0d3c49a25882 100644
--- a/lib/modules/Sql.pmod/pgsql.pike
+++ b/lib/modules/Sql.pmod/pgsql.pike
@@ -316,7 +316,7 @@ private .pgsql_util.conxion getsocket(void|int nossl) {
   .pgsql_util.conxion lcon=getsocket(2);
   lcon->add_int32(16)->add_int32(PG_PROTOCOL(1234,5678))
    ->add_int32(backendpid)->add(cancelsecret)->sendcmd(FLUSHSEND);
-  lcon=0;
+  destruct(lcon);		// Destruct explicitly to avoid delayed close
 #ifdef PG_DEBUGMORE
   PD("Closetrace %O\n",backtrace());
 #endif
diff --git a/lib/modules/Sql.pmod/pgsql_util.pmod b/lib/modules/Sql.pmod/pgsql_util.pmod
index f0077a1455988054b16ff215bde2fd1cf5bce183..fff0261f78f0f07603f7f0a822cd07c86254c6fe 100644
--- a/lib/modules/Sql.pmod/pgsql_util.pmod
+++ b/lib/modules/Sql.pmod/pgsql_util.pmod
@@ -279,10 +279,14 @@ class conxion {
   }
 
   private int write_cb() {
-    Thread.MutexKey lock=shortmux->lock();
-    towrite-=output_to(socket,towrite);
-    lock=0;
-    if(!i->fillread && !sizeof(this))
+    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();
     return 0;
   }
@@ -364,6 +368,7 @@ outer:
   }
 
   protected void destroy() {
+    PD("%d>Close conxion %d\n", socket ? socket->query_fd() : -1, !!nostash);
     if(nostash) {
       catch {
         while(sizeof(closecallbacks))