diff options
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | lib/gnutls_dtls.c | 15 | ||||
-rw-r--r-- | lib/gnutls_int.h | 1 | ||||
-rw-r--r-- | lib/gnutls_record.c | 2 | ||||
-rw-r--r-- | lib/includes/gnutls/dtls.h | 1 | ||||
-rw-r--r-- | lib/libgnutls.map | 1 |
6 files changed, 24 insertions, 0 deletions
@@ -4,6 +4,9 @@ See the end for copying conditions. * Version 3.0.3 (unreleased) +** libgnutls: Added gnutls_record_get_discarded() to return the +number of discarded records in a DTLS session. + ** libgnutls: All functions related to RSA-EXPORT were deprecated. Support for RSA-EXPORT ciphersuites will be ceased in future versions. @@ -34,6 +37,7 @@ gnutls_pkcs11_privkey_generate: Added gnutls_pubkey_import_ecc_raw: Added gnutls_pubkey_import_ecc_x962: Added gnutls_pubkey_get_pk_ecc_x962: Added +gnutls_record_get_discarded: Added * Version 3.0.2 (released 2011-09-01) diff --git a/lib/gnutls_dtls.c b/lib/gnutls_dtls.c index ea49fc7fbf..29dc2d1640 100644 --- a/lib/gnutls_dtls.c +++ b/lib/gnutls_dtls.c @@ -705,3 +705,18 @@ void gnutls_dtls_prestate_set(gnutls_session_t session, gnutls_dtls_prestate_st* session->internals.dtls.hsk_read_seq = prestate->hsk_read_seq; session->internals.dtls.hsk_write_seq = prestate->hsk_write_seq + 1; } + +/** + * gnutls_record_get_discarded: + * @session: is a #gnutls_session_t structure. + * + * Returns the number of discarded packets in a + * DTLS connection. + * + * Returns: The number of discarded packets. + **/ +unsigned int gnutls_record_get_discarded (gnutls_session_t session) +{ + return session->internals.dtls.packets_dropped; +} + diff --git a/lib/gnutls_int.h b/lib/gnutls_int.h index 7ad7720955..9b0b8bf7c0 100644 --- a/lib/gnutls_int.h +++ b/lib/gnutls_int.h @@ -622,6 +622,7 @@ typedef struct /* last retransmission triggered by record layer */ time_t last_retransmit; + unsigned int packets_dropped; } dtls_st; diff --git a/lib/gnutls_record.c b/lib/gnutls_record.c index 874099f3df..22e49234e6 100644 --- a/lib/gnutls_record.c +++ b/lib/gnutls_record.c @@ -1075,6 +1075,8 @@ begin: return ret; discard: + session->internals.dtls.packets_dropped++; + /* discard the whole received fragment. */ bufel = _mbuffer_head_pop_first(&session->internals.record_recv_buffer); _mbuffer_xfree(&bufel); diff --git a/lib/includes/gnutls/dtls.h b/lib/includes/gnutls/dtls.h index 2f3369cd21..3183d6064d 100644 --- a/lib/includes/gnutls/dtls.h +++ b/lib/includes/gnutls/dtls.h @@ -77,6 +77,7 @@ unsigned int gnutls_dtls_get_data_mtu (gnutls_session_t session); void gnutls_dtls_prestate_set (gnutls_session_t session, gnutls_dtls_prestate_st* prestate); + unsigned int gnutls_record_get_discarded (gnutls_session_t session); #ifdef __cplusplus } #endif diff --git a/lib/libgnutls.map b/lib/libgnutls.map index 97ff01cc50..70bc8414ca 100644 --- a/lib/libgnutls.map +++ b/lib/libgnutls.map @@ -716,6 +716,7 @@ GNUTLS_3_0_0 { gnutls_pkcs11_privkey_generate; gnutls_pubkey_import_ecc_raw; gnutls_pubkey_import_ecc_raw2; + gnutls_record_get_discarded; } GNUTLS_2_12; GNUTLS_PRIVATE { |