v0.1.20
A repeated DTLS handshake message is now reported as repeated.
ProbeResult.handshake_msgs keyed its de-duplication on the message name,
so a peer that sent the same message twice was reported as having sent it
once. A re-issued HelloVerifyRequest is exactly that shape: the client
answers the first cookie request and ignores a second, so a peer that
keeps asking for one deadlocks the handshake until the deadline, and the
only record of it rendered as an ordinary cookie exchange.
Identity now comes from the message bytes. A retransmission repeats the
message verbatim and still collapses; a message differing in any byte is
listed again. Fragments of one message differ from each other without the
peer having said anything new, so identity is taken from the fragment at
offset zero and continuations are skipped.
handshake_counts is new: a Counter recording every transmission by name,
retransmissions included. A high count against a short handshake_msgs
says the peer kept resending what it had already sent.
Validated on hardware. The dryer and oven both complete with every count
at 1, the oven carrying six messages in eight datagrams: a fragmented
certificate chain, counted once. Three HelloVerifyRequests from a local
responder, two cookies between them, list twice and count three.