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