From 70a17c48b656460d13f669c5885b92d5226b6749 Mon Sep 17 00:00:00 2001
From: "Stephen R. van den Berg" <srb@cuci.nl>
Date: Mon, 17 Feb 2020 15:19:16 +0100
Subject: [PATCH] pgsql: Avoid output_to() race on large requests.

---
 lib/modules/Sql.pmod/pgsql_util.pmod | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/modules/Sql.pmod/pgsql_util.pmod b/lib/modules/Sql.pmod/pgsql_util.pmod
index 3834a21817..640954563a 100644
--- a/lib/modules/Sql.pmod/pgsql_util.pmod
+++ b/lib/modules/Sql.pmod/pgsql_util.pmod
@@ -565,7 +565,8 @@ outer:
               add(PGFLUSH);
             case SENDOUT:;
           }
-          if (towrite = sizeof(this)) {
+          Thread.MutexKey lock = shortmux->trylock();
+          if (lock && (towrite = sizeof(this))) {
             PD("%d>Sendcmd %O\n",
              socket->query_fd(), ((string)this)[..towrite-1]);
             towrite -= output_to(socket, towrite);
-- 
GitLab