diff --git a/src/lib/curl/Global.cxx b/src/lib/curl/Global.cxx
index 4acb16fe6..0cd8b533d 100644
--- a/src/lib/curl/Global.cxx
+++ b/src/lib/curl/Global.cxx
@@ -225,6 +225,13 @@ CurlGlobal::UpdateTimeout(long timeout_ms) noexcept
 		return;
 	}
 
+	if (timeout_ms < 1)
+		/* CURL's threaded resolver sets a timeout of 0ms, which
+		   means we're running in a busy loop.  Quite a bad
+		   idea to waste so much CPU.  Let's use a lower limit
+		   of 1ms. */
+		timeout_ms = 1;
+
 	timeout_event.Schedule(std::chrono::milliseconds(timeout_ms));
 }