diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2012-02-08 23:44:13 +0100 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2012-02-08 23:44:13 +0100 |
commit | 8c19b028492148fcd27c2472a56cb46b88e5eea2 (patch) | |
tree | 1fc8e9c598710935b97b3dc2ec8d5f90baa3bb47 /lib/gnutls_handshake.c | |
parent | da7ed7be8266fe7c478533342aea4a9bdb651d5d (diff) | |
download | gnutls-8c19b028492148fcd27c2472a56cb46b88e5eea2.tar.gz |
gnutls_record_check_pending() accounts data not yet processed.
DTLS layer avoids multiple retransmissions in non-blocking mode.
Diffstat (limited to 'lib/gnutls_handshake.c')
-rw-r--r-- | lib/gnutls_handshake.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/gnutls_handshake.c b/lib/gnutls_handshake.c index f362be81e3..60434fa950 100644 --- a/lib/gnutls_handshake.c +++ b/lib/gnutls_handshake.c @@ -2680,7 +2680,8 @@ _gnutls_recv_handshake_final (gnutls_session_t session, int init) /* This is the last flight and peer cannot be sure * we have received it unless we notify him. So we * wait for a message and retransmit if needed. */ - if (IS_DTLS(session) && !_dtls_is_async(session)) + if (IS_DTLS(session) && !_dtls_is_async(session) && + gnutls_record_check_pending (session) == 0) { ret = _dtls_wait_and_retransmit(session); if (ret < 0) @@ -2716,7 +2717,8 @@ _gnutls_recv_handshake_final (gnutls_session_t session, int init) case STATE31: STATE = STATE31; - if (IS_DTLS(session) && !_dtls_is_async(session)) + if (IS_DTLS(session) && !_dtls_is_async(session) && + gnutls_record_check_pending( session) == 0) { ret = _dtls_wait_and_retransmit(session); if (ret < 0) |