From a13002b9f01aef2fe274387f59dc8d76e1b6b651 Mon Sep 17 00:00:00 2001
From: XANTRONIX Development <dev@xantronix.com>
Date: Sat, 4 Jan 2025 22:00:15 -0500
Subject: [PATCH] Use two concurrent queries to avoid client waiting

---
 lib/xenu_nntp/session.py | 23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/lib/xenu_nntp/session.py b/lib/xenu_nntp/session.py
index 3c5748a..a8033ca 100644
--- a/lib/xenu_nntp/session.py
+++ b/lib/xenu_nntp/session.py
@@ -541,22 +541,25 @@ class Session(Connection):
 
             sql = """
                 select
-                    message.*
+                    message_id
                 from
-                    newsgroup_message,
-                    message
+                    newsgroup_message
                 where
-                    message.id = newsgroup_message.message_id
-                    and newsgroup_message.newsgroup_id = %s
-            """
+                    newsgroup_id = %s
+                    and """ + msgrange.where('message_id')
 
-            sql += " and " + msgrange.where('message.id')
-
-            cr = self.db.query_sql(Message, sql, (self.newsgroup.id,))
+            cr = self.db.execute(sql, (self.newsgroup.id,))
 
             first = True
 
-            for message in cr.each():
+            while True:
+                row = cr.fetchone()
+
+                if row is None:
+                    break
+
+                message = self.db.get(Message, {'id': row[0]})
+
                 if first:
                     first = False
                     self.respond(success)