Mercurial > prosody-hg
diff net/unbound.lua @ 14208:9c062f243d3a 13.0
net.unbound: Let in-flight queries complete after re-initialization
This is meant to reduce potential disruption of in-flight queries on
reload.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sat, 30 May 2026 19:18:21 +0200 |
| parents | 23f1c71b3d56 |
| children | c4aa9b2b4787 |
line wrap: on
line diff
--- a/net/unbound.lua Sat May 30 00:32:06 2026 +0200 +++ b/net/unbound.lua Sat May 30 19:18:21 2026 +0200 @@ -19,6 +19,7 @@ local libunbound = require"lunbound"; local promise = require"prosody.util.promise"; local new_id = require "prosody.util.id".short; +local timer = require "prosody.util.timer"; local dns_utils = require"prosody.util.dns"; local classes, types, errors = dns_utils.classes, dns_utils.types, dns_utils.errors; @@ -165,8 +166,14 @@ -- Reinitiate libunbound context, drops cache local function purge() - for id in pairs(waiting_queries) do cancel(id); end - if server_conn then server_conn:close(); end + if server_conn then + local old_unbound, old_server_conn = unbound, server_conn; + timer.add_task(30, function() + old_server_conn:close(); + -- Blocking wait for any straggler queries to prevent "leak" of waiting_queries[] entries + old_unbound:wait(); + end) + end initialize(); return true; end
