At Mon, 27 Oct 2008 12:07:59 +0100,
Robin Seggelmann wrote:
We're still working on DTLS for SCTP and stumbled over a problem with
the last flights specified in RFC 4347. The server receives flight 5
(Certificate, ..., ChangeCipherSpec, Finished) from the client,
changes its state to FINISHED and sends its ChangeCipherSpec and
Finished (Flight 6). What happens if this flight gets lost? The
server already is in the FINISHED state and as there also is no
acknowledgement, so it won't be retransmitted. Hence, the client
keeps waiting for the flight to arrive and the connection is most
likely to fail.
You're right, this is a bug in the state machine. Nice catch.
ISTM that the way this actually needs to work is that the server needs
to stay in WAITING until 2MSL has expired, in case it receives a
retransmitted Flight 5, in which case it retransmits Flight 6.