Cuong Manh Le
4b665dd504
cli: renew upstream connections after a sleep, and retry before the plaintext fallback
...
After a wake or a network change, a query to an encrypted upstream can
ride a connection opened before the sleep or on the previous network.
It times out there, and the query falls back to the OS resolver, which
sends it in plaintext on port 53, although a new connection would be
answered at once.
Every query now checks whether the host slept since the previous one,
and if so renews the upstream connections before it is sent. A sleep
shows as the wall clock moving ahead of a clock that stops while the
host sleeps: Go's monotonic clock on Linux and macOS, and the unbiased
interrupt time on Windows, where Go's monotonic clock keeps running.
This does not wait for netmon or a wake detector. A wake now also
re-bootstraps the upstreams.
Before the fallback, a query whose upstreams all failed is retried once
on fresh connections when the network epoch moved while it ran: a
network change or a wake was handled, or a sleep was found then.
2026-10-20 17:23:47 +07:00
..
2024-02-07 14:40:18 +07:00
2026-10-20 17:17:54 +07:00
2025-01-24 14:54:20 +07:00
2025-12-18 17:10:39 +07:00
2025-12-18 17:10:39 +07:00
2026-10-20 17:17:54 +07:00
2026-10-20 17:17:54 +07:00
2026-10-20 17:17:54 +07:00
2026-09-28 16:49:42 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2025-02-18 20:25:13 +07:00
2026-09-28 16:49:05 +07:00
2026-09-28 16:49:05 +07:00
2026-07-28 16:11:37 +07:00
2026-10-20 17:23:47 +07:00
2026-09-28 16:44:51 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-09-28 16:47:40 +07:00
2026-09-28 16:44:51 +07:00
2026-09-28 16:44:51 +07:00
2026-09-28 16:44:51 +07:00
2026-10-20 17:23:47 +07:00
2023-08-15 18:22:38 +07:00
2026-09-28 16:47:40 +07:00
2026-09-28 16:47:40 +07:00
2026-09-28 16:47:40 +07:00
2026-10-20 17:23:47 +07:00
2026-09-28 16:56:04 +07:00
2026-09-28 16:49:05 +07:00
2026-09-28 16:56:04 +07:00
2026-09-28 16:49:05 +07:00
2026-09-28 16:49:05 +07:00
2026-09-28 16:49:05 +07:00
2026-09-28 16:49:05 +07:00
2026-09-28 16:49:05 +07:00
2026-10-20 17:23:47 +07:00
2026-08-21 14:45:56 +07:00
2026-09-28 16:45:45 +07:00
2026-08-21 14:46:44 +07:00
2026-09-28 16:49:05 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-10-06 14:52:42 +07:00
2026-09-28 16:45:03 +07:00
2026-10-20 17:23:47 +07:00
2026-09-28 16:50:50 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-09-28 16:55:15 +07:00
2026-09-28 16:56:04 +07:00
2026-09-28 16:52:27 +07:00
2026-09-28 16:52:27 +07:00
2026-09-01 11:08:13 +07:00
2026-09-28 16:55:15 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-09-28 16:55:27 +07:00
2026-09-28 16:55:27 +07:00
2026-10-20 17:23:47 +07:00
2026-09-28 16:55:27 +07:00
2026-09-28 16:55:15 +07:00
2026-10-20 17:23:47 +07:00
2026-09-28 16:56:04 +07:00
2026-09-28 16:55:27 +07:00
2026-09-28 16:55:42 +07:00
2026-09-28 16:56:04 +07:00
2026-09-01 11:08:13 +07:00
2026-09-28 16:55:27 +07:00
2026-09-01 11:08:13 +07:00
2023-08-15 18:22:38 +07:00
2026-09-28 16:49:42 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-09-28 16:44:51 +07:00
2026-09-28 16:44:51 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-08-21 14:46:44 +07:00
2026-09-28 16:49:05 +07:00
2026-10-06 14:53:19 +07:00
2026-10-06 14:53:19 +07:00
2026-10-06 14:53:19 +07:00
2026-10-06 14:53:19 +07:00
2026-09-28 16:52:10 +07:00
2026-08-21 14:49:58 +07:00
2026-08-21 14:49:58 +07:00
2026-09-28 16:56:04 +07:00
2026-09-28 16:56:04 +07:00
2026-09-28 16:56:04 +07:00
2026-08-22 01:34:48 +07:00
2026-09-28 16:49:42 +07:00
2026-10-06 14:52:42 +07:00
2026-09-28 16:47:40 +07:00
2026-09-28 16:47:40 +07:00
2026-10-06 14:52:42 +07:00
2026-10-06 14:52:42 +07:00
2026-10-20 17:23:47 +07:00
2026-10-06 14:52:42 +07:00
2026-09-28 16:51:55 +07:00
2026-09-28 16:51:55 +07:00
2026-09-28 16:47:40 +07:00
2026-09-28 16:47:40 +07:00
2026-10-06 14:52:42 +07:00
2026-09-28 16:47:40 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-09-28 16:51:55 +07:00
2026-09-28 16:47:40 +07:00
2026-03-25 13:58:44 +07:00
2026-09-28 16:49:05 +07:00
2026-09-28 16:47:40 +07:00
2026-10-20 17:23:47 +07:00
2023-12-13 14:53:29 +07:00
2026-09-28 16:52:51 +07:00
2026-08-21 15:12:32 +07:00
2026-09-28 16:47:40 +07:00
2026-10-20 17:23:47 +07:00
2026-08-21 14:48:20 +07:00
2026-09-28 16:51:55 +07:00
2026-09-28 16:55:42 +07:00
2026-09-28 16:49:05 +07:00
2026-09-28 16:49:05 +07:00
2026-09-28 16:49:05 +07:00
2026-09-28 16:49:05 +07:00
2026-09-28 16:49:05 +07:00
2026-09-28 16:49:05 +07:00
2026-09-28 16:49:05 +07:00
2026-10-06 14:52:42 +07:00
2026-10-20 17:23:47 +07:00
2023-09-22 18:42:21 +07:00
2023-08-15 18:22:38 +07:00
2026-09-28 16:49:42 +07:00
2026-09-28 16:55:42 +07:00
2026-09-28 16:55:42 +07:00
2026-10-20 17:23:47 +07:00
2026-09-28 16:49:05 +07:00
2026-09-28 16:49:05 +07:00
2026-10-06 14:52:42 +07:00
2026-10-06 14:52:42 +07:00
2026-09-28 16:45:33 +07:00
2026-09-28 16:51:55 +07:00
2026-09-28 16:45:33 +07:00
2026-09-28 16:45:33 +07:00
2026-09-28 16:45:33 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2023-11-16 20:55:39 +07:00
2025-02-18 20:25:13 +07:00
2026-08-21 14:46:44 +07:00
2026-08-21 14:46:44 +07:00
2026-08-21 14:46:44 +07:00
2026-09-28 16:45:45 +07:00
2026-07-14 01:12:37 +07:00
2026-07-14 01:12:37 +07:00
2025-05-15 17:00:59 +07:00
2025-05-15 17:00:59 +07:00
2023-08-15 18:22:38 +07:00
2026-10-20 17:23:47 +07:00
2023-08-15 18:22:38 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2024-12-19 21:34:37 +07:00
2026-03-03 14:29:09 +07:00
2026-09-28 16:55:15 +07:00
2026-09-28 16:55:15 +07:00
2026-09-28 16:55:15 +07:00
2026-09-28 16:55:15 +07:00
2026-09-28 16:55:15 +07:00
2026-09-28 16:55:15 +07:00
2026-09-28 16:55:15 +07:00
2026-09-28 16:45:33 +07:00
2026-09-28 16:45:33 +07:00
2026-08-21 14:45:56 +07:00
2026-08-21 14:45:56 +07:00
2026-09-28 16:49:05 +07:00
2026-09-28 16:49:05 +07:00
2026-09-28 16:49:05 +07:00
2023-08-15 18:22:38 +07:00
2023-08-15 18:22:38 +07:00
2026-09-28 16:44:51 +07:00
2024-05-09 18:39:30 +07:00
2026-08-05 00:39:42 +07:00
2025-02-26 00:44:13 +07:00
2026-07-14 01:12:34 +07:00
2025-02-26 00:44:13 +07:00
2026-10-20 17:23:47 +07:00
2024-08-07 15:51:11 +07:00
2026-09-28 16:44:51 +07:00
2026-09-28 16:44:51 +07:00
2026-10-20 17:17:54 +07:00
2026-10-20 17:17:54 +07:00
2026-09-28 16:44:51 +07:00
2026-09-28 16:51:55 +07:00
2026-09-28 16:51:55 +07:00
2026-10-06 14:53:19 +07:00
2026-09-28 16:49:05 +07:00
2026-09-28 16:49:05 +07:00
2026-09-28 16:49:05 +07:00
2026-10-20 17:23:47 +07:00
2026-10-06 14:53:19 +07:00
2026-10-06 14:53:33 +07:00
2026-09-28 16:49:05 +07:00
2026-09-28 16:49:42 +07:00
2026-10-20 17:23:47 +07:00
2026-09-28 16:49:42 +07:00
2026-09-28 16:49:42 +07:00
2024-08-07 15:54:20 +07:00
2026-10-20 17:23:47 +07:00
2024-02-22 18:15:36 +07:00
2025-02-10 18:55:36 +07:00
2026-09-28 16:49:42 +07:00
2026-09-28 16:49:05 +07:00
2026-09-28 16:49:05 +07:00
2026-09-28 16:49:05 +07:00
2025-05-15 17:00:59 +07:00
2025-05-15 17:00:59 +07:00
2024-08-07 15:51:11 +07:00
2024-08-07 15:51:11 +07:00
2024-08-16 13:50:11 +07:00
2025-03-26 23:18:36 +07:00
2025-03-26 23:18:36 +07:00
2025-03-26 23:18:36 +07:00
2023-08-15 18:22:38 +07:00
2026-09-01 11:03:13 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-08-21 15:12:32 +07:00
2026-10-20 17:23:47 +07:00
2026-08-21 14:50:27 +07:00
2026-08-21 14:50:27 +07:00
2026-08-21 14:50:27 +07:00
2026-08-21 14:50:27 +07:00
2026-09-28 16:47:40 +07:00
2026-08-21 14:50:27 +07:00
2026-08-21 14:50:27 +07:00
2026-08-21 14:52:02 +07:00
2024-12-19 21:34:21 +07:00
2026-03-25 13:58:24 +07:00
2026-09-01 11:03:13 +07:00
2026-09-28 16:49:42 +07:00
2026-10-20 17:23:47 +07:00
2026-09-28 16:40:49 +07:00
2026-09-28 16:40:49 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-10-20 17:23:47 +07:00
2026-09-28 16:49:05 +07:00
2026-09-28 16:49:05 +07:00
2026-07-28 16:12:36 +07:00
2026-08-21 14:50:11 +07:00
2026-08-21 14:50:11 +07:00
2026-10-06 14:53:19 +07:00
2026-09-28 16:51:55 +07:00
2026-09-28 16:53:02 +07:00
2026-09-28 16:49:42 +07:00
2026-09-28 16:56:04 +07:00
2026-09-28 16:49:05 +07:00
2026-10-20 17:23:47 +07:00
2024-02-07 14:40:18 +07:00