mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2026-01-31 12:49:18 +01:00
Introduce ACK and retransmission logic, encapsulated in a Dtls13RtxFsm object. The retransmission or the sending of an ACK is scheduled by setting the appropriate flag inside the Dtls13RtxFSM object but the actual writing on the socket is deferred and done in wolfSSL_Accept/Connect. * Retransmission Each sent message is encapsulated in a Dtl13RtxRecord and saved on a list. If we receive an ACK for at record, we remove it from the list so it will be not retransmitted further, then we will retransmit the remaining ones. Retransmission is throttled: beside link congestion, this also avoid too many sequence numbers bounded with a record. * ACK For each received record we save the record sequence number, so we can send an ACK if needed. We send an ACK either if explicitly needed by the flight or if we detect a disruption. Co-authored-by: Juliusz Sosinowicz <juliusz@wolfssl.com>
The wolfSSL manual is available at: http://www.wolfssl.com/documentation/wolfSSL-Manual.pdf The wolfSSL API guide is available at: https://www.wolfssl.com/doxygen/wolfssl_API.html The wolfCrypt API guide is available at: https://www.wolfssl.com/doxygen/wolfcrypt_API.html