if (_dtls_is_async(session) && _dtls_async_timer_active(session))
{
- ret = _dtls_retransmit(session);
- if (ret == 0)
+ if (session->security_parameters.entity == GNUTLS_SERVER &&
+ bufel->htype == GNUTLS_HANDSHAKE_CLIENT_HELLO)
{
- ret = gnutls_assert_val(GNUTLS_E_AGAIN);
- goto unexpected_packet;
+ /* client requested rehandshake. Delete the timer */
+ _dtls_async_timer_delete(session);
+ }
+ else
+ {
+ ret = _dtls_retransmit(session);
+ if (ret == 0)
+ {
+ ret = gnutls_assert_val(GNUTLS_E_AGAIN);
+ goto unexpected_packet;
+ }
+ goto cleanup;
}
- goto cleanup;
}
}