We currently set timers for PATH_CHALLENGEs inside the poll_transmit function. This is however a pattern that the code does not follow: All the other code is structured so that timers are set when the logical change happens to the state machine. In this case that is when the PATH_CHALLENGE is scheduled for transmission.
The poll_transmit function is expected to pick up the work immediately afterwards regardless, it should only concern itself with building packets and minimise any other logical state changes. The previous code that set the timer inside there was introduced as a workaround for broken behaviour inside noq which did not manage to call noq-proto in time. This has since been fixed in #540 and more comprehensively avoided in #541.
We should now revert poll_transmit to not set timers.
Split off from #618.
We currently set timers for PATH_CHALLENGEs inside the
poll_transmitfunction. This is however a pattern that the code does not follow: All the other code is structured so that timers are set when the logical change happens to the state machine. In this case that is when the PATH_CHALLENGE is scheduled for transmission.The
poll_transmitfunction is expected to pick up the work immediately afterwards regardless, it should only concern itself with building packets and minimise any other logical state changes. The previous code that set the timer inside there was introduced as a workaround for broken behaviour inside noq which did not manage to call noq-proto in time. This has since been fixed in #540 and more comprehensively avoided in #541.We should now revert poll_transmit to not set timers.
Split off from #618.