zeekay and Hanzo Dev
d408ae3e1d
runtime: answer an unset logger once, so no handler can be crashed by its absence
...
NewRuntime stored the caller's Logger as given, so a Runtime built without one
held a nil interface. Twenty-four sites in engine/chain read that logger with a
bare IsZero(); fourteen others ask `!= nil &&` first. Two of the twenty-four are
the first line of HandleIncomingVote and HandleIncomingCert, which is to say a
remote input reached a nil interface method call before anything validated it.
The engine already settles this for itself — NewWithConfig falls back to
log.Noop() when no logger is set — so the runtime constructor now does the same
thing in the same way. Runtime.config is unexported and written once, at
construction, so past NewRuntime a logger is always present and all twenty-four
sites are safe by construction rather than by twenty-four remembered guards.
Noop discards what it is given and reports IsZero, so an unset logger stays
exactly as silent as it was; nothing else changes.
Co-authored-by: Hanzo Dev <[email protected] >
2026-09-01 22:37:31 -07:00
..
2026-03-03 12:00:00 -08:00
2026-08-21 17:45:38 -07:00
2025-09-27 03:26:38 +00:00
2025-12-03 23:56:12 -08:00
2025-09-27 03:26:38 +00:00
2026-08-15 21:52:51 -07:00
2026-08-21 11:45:32 -07:00
2026-02-15 14:08:02 -08:00
2026-08-14 14:57:08 -07:00
2026-08-13 22:29:04 -07:00
2026-08-08 08:01:16 -07:00
2026-08-21 11:45:32 -07:00
2026-09-01 12:01:23 -07:00
2026-08-14 14:57:08 -07:00
2026-09-01 22:19:35 -07:00
2026-09-01 20:52:28 -07:00
2026-09-01 20:52:28 -07:00
2026-09-01 20:52:28 -07:00
2026-09-01 12:01:23 -07:00
2026-08-18 22:21:49 -07:00
2026-07-10 01:17:22 -07:00
2026-08-29 20:02:17 -07:00
2026-08-29 19:11:08 -07:00
2026-06-22 16:32:28 -07:00
2026-08-21 11:45:32 -07:00
2026-08-28 12:58:35 -07:00
2026-08-26 13:18:52 -07:00
2026-08-14 20:27:29 -07:00
2026-08-14 14:57:08 -07:00
2026-07-10 03:58:20 -07:00
2026-08-15 23:30:25 -07:00
2026-09-01 08:10:24 -07:00
2026-08-14 20:27:29 -07:00
2026-08-01 00:58:56 -07:00
2026-09-01 12:01:23 -07:00
2026-09-01 12:01:23 -07:00
2026-07-07 12:25:14 -07:00
2026-08-14 14:57:08 -07:00
2026-08-14 14:57:08 -07:00
2026-08-21 07:15:50 -07:00
2026-08-21 11:45:32 -07:00
2026-08-14 07:56:43 -07:00
2026-08-14 04:30:07 -07:00
2026-09-01 22:19:35 -07:00
2026-09-01 08:10:35 -07:00
2026-09-01 08:10:35 -07:00
2026-08-29 17:52:36 -07:00
2026-09-01 20:52:28 -07:00
2026-08-14 14:57:08 -07:00
2026-08-14 14:57:08 -07:00
2026-07-10 01:17:22 -07:00
2026-07-09 11:02:44 -07:00
2026-08-28 12:58:35 -07:00
2026-07-31 20:56:06 -07:00
2026-08-28 12:58:35 -07:00
2026-09-01 12:01:23 -07:00
2026-07-09 11:02:44 -07:00
2026-09-01 12:01:23 -07:00
2026-07-31 20:56:06 -07:00
2026-08-20 13:22:05 -07:00
2026-09-01 12:01:23 -07:00
2026-09-01 08:10:24 -07:00
2026-09-01 08:10:24 -07:00
2026-09-01 22:19:35 -07:00
2026-09-01 08:10:24 -07:00
2025-09-27 03:26:38 +00:00
2026-08-21 18:18:00 -07:00
2026-09-01 12:01:23 -07:00
2026-09-01 20:52:28 -07:00
2026-09-01 20:52:28 -07:00
2026-08-20 12:35:32 -07:00
2026-09-01 12:01:23 -07:00
2026-09-01 20:52:28 -07:00
2026-08-21 11:28:36 -07:00
2026-06-28 15:14:16 -07:00
2026-03-01 23:00:51 -08:00
2026-06-28 15:14:16 -07:00
2026-09-01 20:52:28 -07:00
2026-06-28 15:14:16 -07:00
2026-06-28 15:14:16 -07:00
2026-08-13 18:44:15 -07:00
2026-09-01 12:01:23 -07:00
2026-09-01 17:39:39 -07:00
2026-09-01 12:01:23 -07:00
2026-08-21 11:28:36 -07:00
2026-08-20 10:32:39 -07:00
2026-08-14 14:57:08 -07:00
2026-09-01 22:19:35 -07:00
2026-06-28 15:14:16 -07:00
2026-08-21 14:48:47 -07:00
2026-09-01 20:52:28 -07:00
2026-08-21 11:28:36 -07:00
2026-06-22 16:32:28 -07:00
2026-08-21 11:45:32 -07:00
2026-09-01 22:37:31 -07:00
2026-08-21 11:45:32 -07:00
2026-07-10 15:28:01 -07:00
2026-09-01 20:52:28 -07:00
2026-09-01 22:19:35 -07:00
2026-08-14 22:29:09 -07:00
2026-08-21 08:37:55 -07:00
2026-08-21 11:45:32 -07:00
2026-07-02 17:48:59 -07:00
2026-09-01 22:37:31 -07:00
2026-08-21 11:45:32 -07:00
2026-07-05 12:17:43 -07:00
2026-08-14 14:57:08 -07:00
2026-06-30 23:18:15 -07:00
2026-09-01 19:07:15 -07:00
2026-08-14 14:57:08 -07:00
2026-09-01 08:10:24 -07:00
2026-08-21 11:28:36 -07:00
2026-09-01 20:52:28 -07:00
2026-08-13 22:29:04 -07:00
2026-08-14 14:57:08 -07:00
2026-07-31 20:56:06 -07:00
2026-08-28 12:58:35 -07:00
2026-07-09 10:50:09 -07:00
2026-08-21 11:45:32 -07:00
2026-07-03 19:53:01 -07:00
2026-09-01 12:01:23 -07:00
2026-09-01 12:01:23 -07:00
2026-06-28 15:14:16 -07:00
2026-09-01 20:52:28 -07:00
2026-09-01 12:01:23 -07:00
2026-07-10 03:58:20 -07:00
2026-06-28 15:14:16 -07:00
2026-09-01 17:39:39 -07:00
2026-09-01 20:52:28 -07:00
2026-09-01 17:39:39 -07:00
2026-07-01 13:13:34 -07:00
2026-07-01 13:13:34 -07:00
2026-08-21 11:45:32 -07:00
2026-09-01 12:01:23 -07:00
2026-08-14 20:27:29 -07:00
2026-09-01 12:01:23 -07:00
2026-07-09 10:50:09 -07:00
2026-09-01 22:19:35 -07:00
2026-09-01 17:39:39 -07:00
2026-08-15 23:51:36 -07:00
2026-09-01 12:01:23 -07:00
2026-08-15 23:30:25 -07:00
2026-07-02 15:29:14 -07:00
2026-08-21 11:45:32 -07:00
2026-08-13 22:29:04 -07:00
2026-08-28 12:58:35 -07:00
2026-07-10 00:25:16 -07:00
2026-08-14 14:57:08 -07:00
2026-09-01 20:52:28 -07:00
2026-08-21 11:28:36 -07:00
2026-08-21 11:44:51 -07:00
2026-08-21 14:48:47 -07:00
2026-08-14 14:57:08 -07:00
2026-08-28 12:58:35 -07:00
2026-07-10 03:58:20 -07:00
2026-09-01 12:01:23 -07:00
2026-08-15 23:30:25 -07:00
2026-09-01 12:01:23 -07:00
2026-09-01 22:19:35 -07:00
2026-09-01 20:52:28 -07:00
2026-08-21 11:45:32 -07:00
2026-07-10 15:28:01 -07:00
2026-08-14 22:11:30 -07:00
2026-09-01 12:01:23 -07:00