From b9e53db51fa286baf45b13446a44b71aeae3eea6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Wed, 26 Jun 2024 14:18:11 +0200
Subject: [PATCH] Protocols.HTTP.Query: Enable timeouts for blocking SSL too.

Non-responsive blocking https requests will now terminate after
the set timeout (default 2 minutes).
---
 lib/modules/Protocols.pmod/HTTP.pmod/Query.pike | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike b/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike
index 0f6794b2aa..a4ec213b95 100644
--- a/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike
+++ b/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike
@@ -248,6 +248,11 @@ protected int ponder_answer( int|void start_position )
    ok=1;
    remove_async_timeout();
    TOUCH_TIMEOUT_WATCHDOG();
+   if (con && con->set_timeout) {
+     // SSL connection.
+     con->set_timeout((data_timeout || timeout) &&
+                      (float)(data_timeout || timeout));
+   }
 
    if (request_ok) request_ok(this,@extra_args);
    return 1;
@@ -302,6 +307,8 @@ void start_tls(int|void blocking, int|void async)
     ssl->set_blocking();
   }
 
+  ssl->set_timeout(timeout && (float)timeout);
+
   if (!(ssl_session = ssl->connect(real_host, ssl_session))) {
     error("HTTPS connection failed.\n");
   }
-- 
GitLab