same fix to MicriumReceive

This commit is contained in:
Anthony Hu
2022-06-21 10:42:20 -04:00
parent 1e84d1eb67
commit ff4eabb17f

View File

@ -2128,20 +2128,40 @@ int MicriumReceive(WOLFSSL *ssl, char *buf, int sz, void *ctx)
NET_SOCK_RTN_CODE ret;
NET_ERR err;
#ifdef WOLFSSL_DTLS
#ifdef WOLFSSL_DTLS
{
int dtls_timeout = wolfSSL_dtls_get_current_timeout(ssl);
if (wolfSSL_dtls(ssl)
&& !wolfSSL_dtls_get_using_nonblock(ssl)
&& dtls_timeout != 0) {
/* Don't use ssl->options.handShakeDone since it is true even if
* we are in the process of renegotiation */
byte doDtlsTimeout = ssl->options.handShakeState != HANDSHAKE_DONE;
#ifdef WOLFSSL_DTLS13
if (ssl->options.dtls && IsAtLeastTLSv1_3(ssl->version)) {
if (
doDtlsTimeout =
doDtlsTimeout || ssl->dtls13Rtx.rtxRecords != NULL ||
(ssl->dtls13FastTimeout && ssl->dtls13Rtx.seenRecords != NULL);
}
#endif /* WOLFSSL_DTLS13 */
if (!doDtlsTimeout)
dtls_timeout = 0;
if (!wolfSSL_dtls_get_using_nonblock(ssl)) {
/* needs timeout in milliseconds */
#ifdef WOLFSSL_DTLS13
if (wolfSSL_dtls13_use_quick_timeout(ssl) &&
IsAtLeastTLSv1_3(ssl->version) && (dtls_timeout >= 4)) {
dtls_timeout = dtls_timeout / 4;
}
#endif /* WOLFSSL_DTLS13 */
NetSock_CfgTimeoutRxQ_Set(sd, dtls_timeout * 1000, &err);
if (err != NET_SOCK_ERR_NONE) {
WOLFSSL_MSG("NetSock_CfgTimeoutRxQ_Set failed");
}
}
}
#endif
#endif
ret = NetSock_RxData(sd, buf, sz, ssl->rflags, &err);
if (ret < 0) {