Topic: DTLS: last handshake flight cannot be retransmitted

Using wolfSSL in client mode and resuming a DTLS session, there is no mechanism to retransmit the last message flight if it gets lost. This is the flight that contains the Change Cipher Spec message.

Currently the way to recover from this seems to be to realise that the connection doesn't work and restart the negotiation from scratch.

Are there any plans to implement this mechanism?

The relevant section from RFC 6347 is:

In addition, for at least twice the default MSL defined for [TCP],
when in the FINISHED state, the node that transmits the last flight
(the server in an ordinary handshake or the client in a resumed
handshake) MUST respond to a retransmit of the peer's last flight
with a retransmit of the last flight. This avoids deadlock
conditions if the last flight gets lost. This requirement applies to
DTLS 1.0 as well, and though not explicit in [DTLS1], it was always
required for the state machine to function correctly.

Cheers,
Jonas

Share