[SCM] GNU gnutls branch, gnutls_3_0_x-2, updated. gnutls_3_0_20-24-g98611fd

"Nikos Mavrogiannopoulos" <[email protected]>
Newsgroups gmane.comp.encryption.gpg.gnutls.cvs
Message-ID <[email protected]>
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU gnutls".

http://git.savannah.gnu.org/cgit/gnutls.git/commit/?id=98611fd5e0a68ae0fee58dba117d0b952fce73a6

The branch, gnutls_3_0_x-2 has been updated
       via  98611fd5e0a68ae0fee58dba117d0b952fce73a6 (commit)
       via  9348c9d9acd4cf5b5b0261a24c9bd9bc0f3f1de6 (commit)
      from  6d0b4dc6ef9ed41982d82318f3aa577d8745f69f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 98611fd5e0a68ae0fee58dba117d0b952fce73a6
Author: Nikos Mavrogiannopoulos <[email protected]>
Date:   Sat Jun 30 01:00:28 2012 +0200

    sign fixes

commit 9348c9d9acd4cf5b5b0261a24c9bd9bc0f3f1de6
Author: David Woodhouse <[email protected]>
Date:   Fri Jun 29 21:14:25 2012 +0100

    Add gnutls_dtls_set_data_mtu()
    
    Signed-off-by: Nikos Mavrogiannopoulos <[email protected]>

-----------------------------------------------------------------------

Summary of changes:
 lib/gnutls_dtls.c          |   43 ++++++++++++++++++++++++++++++++++++++++++-
 lib/includes/gnutls/dtls.h |    1 +
 lib/libgnutls.map          |    1 +
 3 files changed, 44 insertions(+), 1 deletions(-)

diff --git a/lib/gnutls_dtls.c b/lib/gnutls_dtls.c
index 979198c..e798b27 100644
--- a/lib/gnutls_dtls.c
+++ b/lib/gnutls_dtls.c
@@ -35,6 +35,7 @@
 #include <gnutls_state.h>
 #include <gnutls/dtls.h>
 #include <timespec.h>
+#include <algorithms.h>
 
 /* returns a-b in ms */
 unsigned int
@@ -653,7 +654,7 @@ int total = 0, ret, iv_size;
 unsigned int gnutls_dtls_get_data_mtu (gnutls_session_t session)
 {
 int mtu = session->internals.dtls.mtu;
-int blocksize = 0;
+unsigned int blocksize = 1;
 int overhead;
  
   mtu -= RECORD_HEADER_SIZE(session);
@@ -669,6 +670,46 @@ int overhead;
 }
 
 /**
+ * gnutls_dtls_set_data_mtu:
+ * @session: is a #gnutls_session_t structure.
+ * @mtu: The maximum unencrypted transfer unit of the session
+ *
+ * This function will set the maximum size of the *unencrypted* records
+ * which will be sent over a DTLS session. It is equivalent to calculating
+ * the DTLS packet overhead with the current encryption parameters, and
+ * calling gnutls_dtls_set_mtu() with that value. In particular, this means
+ * that you may need to call this function again after any negotiation or
+ * renegotiation, in order to ensure that the MTU is still sufficient to
+ * account for the new protocol overhead.
+ *
+ * Returns: %GNUTLS_E_SUCCESS (0) on success, or a negative error code.
+ *
+ * Since: 3.1
+ **/
+int gnutls_dtls_set_data_mtu (gnutls_session_t session, unsigned int mtu)
+{
+  unsigned int blocksize;
+  int overhead = _gnutls_record_overhead_rt(session, &blocksize);
+
+  /* You can't call this until the session is actually running */
+  if (overhead < 0)
+	  return GNUTLS_E_INVALID_SESSION;
+
+  /* Add the overhead inside the encrypted part */
+  mtu += overhead;
+
+  /* Round it up to the next multiple of blocksize */
+  mtu += blocksize - 1;
+  mtu -= mtu % blocksize;
+
+  /* Add the *unencrypted header size */
+  mtu += RECORD_HEADER_SIZE(session);
+
+  gnutls_dtls_set_mtu(session, mtu);
+  return GNUTLS_E_SUCCESS;
+}
+
+/**
  * gnutls_dtls_get_mtu:
  * @session: is a #gnutls_session_t structure.
  *
diff --git a/lib/includes/gnutls/dtls.h b/lib/includes/gnutls/dtls.h
index f65c009..909f0d3 100644
--- a/lib/includes/gnutls/dtls.h
+++ b/lib/includes/gnutls/dtls.h
@@ -44,6 +44,7 @@ unsigned int gnutls_dtls_get_mtu (gnutls_session_t session);
 unsigned int gnutls_dtls_get_data_mtu (gnutls_session_t session);
 
 void gnutls_dtls_set_mtu (gnutls_session_t session, unsigned int mtu);
+int gnutls_dtls_set_data_mtu (gnutls_session_t session, unsigned int mtu);
 
 unsigned int gnutls_dtls_get_timeout (gnutls_session_t session);
 
diff --git a/lib/libgnutls.map b/lib/libgnutls.map
index 108c765..1078a07 100644
--- a/lib/libgnutls.map
+++ b/lib/libgnutls.map
@@ -691,6 +691,7 @@ GNUTLS_3_0_0 {
 	gnutls_dtls_cookie_send;
 	gnutls_dtls_prestate_set;
 	gnutls_dtls_get_data_mtu;
+	gnutls_dtls_set_data_mtu;
 	gnutls_cipher_set_iv;
 	gnutls_pcert_deinit;
 	gnutls_pcert_import_x509;


hooks/post-receive
-- 
GNU gnutls
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.