clboss/Boss
Ken Sedgwick d978de9d84
ChannelCreateDestroyMonitor: tolerate missing old_state (CLN v26.06)
CLN's channel_state_changed notification used to emit the sentinel
value "unknown" for old_state when there was no previous state.
That value was deprecated in v25.05 and is last-supported in v26.04;
as of v26.06 the old_state field is simply omitted instead (see
doc/developers-guide/deprecated-features.md, entry
"channel_state_changed.old_state.unknown").

The notification handler unconditionally extracted old_state, which
throws Jsmn::TypeError when the field is absent.  The throw was
caught by the surrounding handler, logged as Error
("Unexpected channel_state_changed payload: ..."), and then the
handler returned without taking action.  Functional behavior was
unchanged compared to the legacy "unknown" path (both result in
no destruction event), but the new release variant produced noisy
Error log lines for every state-changed notification on nodes
running v26.06+.

Add an explicit has() check and leave old_state as the default
empty string when absent.  The empty string will not match either
"CHANNELD_NORMAL" or "CHANNELD_AWAITING_LOCKIN", so the handler
falls through to the no-op return -- the same outcome the legacy
catch-and-log path produced, but silently.

This is the third and final commit of the v26.06 compatibility
PR (preceded by the Dowser and Matchmaker/ActiveProber commits).
2026-07-02 11:57:02 -07:00
..
Mod ChannelCreateDestroyMonitor: tolerate missing old_state (CLN v26.06) 2026-07-02 11:57:02 -07:00
ModG Boss/Msg/ReqRespTraits.hpp: Use a traits class for requests and response. 2023-07-11 20:57:51 +08:00
Msg Dowser: migrate getroute -> getroutes for CLN v26.06 compat 2026-07-02 11:57:00 -07:00
concurrent.cpp Ev/Io.hpp: Avoid copying objects, just move things around. 2020-09-14 09:12:46 +08:00
concurrent.hpp Boss/concurrent.cpp: Wrapper for Ev::concurrent that ignores Boss::Shutdown exceptions. 2020-09-07 07:39:36 +08:00
JsonInput.cpp Boss/Mod/CommandReceiver.cpp: Handle rpc_command at this level, to increase our responsiveness. 2020-11-10 10:19:53 +08:00
JsonInput.hpp Boss/JsonInput.cpp: Implement input loop. 2020-09-07 11:51:30 +08:00
log.cpp Util/Str.cpp: Implement Util::Str::fmt. 2021-10-06 19:26:55 +08:00
log.hpp Boss/log.hpp: Have GCC do printf checks. 2020-11-24 18:58:39 +08:00
Main.cpp Avoid program_invocation_name which is available only on Linux 2024-10-28 12:12:15 -05:00
Main.hpp Boss/open_rpc_socket.cpp: Function to open the RPC socket. 2020-09-07 21:50:38 +08:00
open_rpc_socket.cpp Use BacktraceException for appropriate (most) exceptions 2024-08-19 15:04:30 -07:00
open_rpc_socket.hpp Boss/open_rpc_socket.cpp: Function to open the RPC socket. 2020-09-07 21:50:38 +08:00
random_engine.cpp Use BacktraceException for appropriate (most) exceptions 2024-08-19 15:04:30 -07:00
random_engine.hpp Boss/random_engine.cpp: Common random engine. 2020-09-10 00:13:02 +08:00
Shutdown.hpp Boss/Shutdown.hpp: Trivial struct for signalling shutdown. 2020-09-07 07:06:30 +08:00
Signer.cpp Use BacktraceException for appropriate (most) exceptions 2024-08-19 15:04:30 -07:00
Signer.hpp Boss/Signer.cpp: Signer for boltz-swapping transactions. 2020-09-23 12:45:50 +08:00