You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Handle interrupts across the whole receive session
Ctrl-C was only honored while the receiver polled for the original
proposal, because the interrupt select lived inside
read_from_directory. Since tokio::signal::ctrl_c replaces the default
terminate handler for the life of the process, an interrupt during
any other receiver phase (for example a transient retry against an
unresponsive relay) was swallowed entirely and the process could only
be stopped by an external kill.
Wrap process_receiver_session in a select against the interrupt
channel in receive_payjoin, mirroring how send_payjoin guards the
sender driver. This is safe at any phase: transitions persist to the
event log with no await between transition and save, so an
interrupted session resumes from its last saved state via the resume
command. The interrupt message now includes the session id, and
read_from_directory becomes a plain single-step function like the
other state handlers.
0 commit comments