]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
use common macros to calculate the overhead.
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Sun, 28 Jul 2013 09:05:00 +0000 (11:05 +0200)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Sun, 28 Jul 2013 09:05:00 +0000 (11:05 +0200)
lib/gnutls_int.h
lib/gnutls_record.h

index e5eb7150e1e0032b94f6057d926733381cd35847..b9904b2c57b34cd3c43d625c568a463670408db3 100644 (file)
@@ -183,12 +183,12 @@ typedef enum record_flush_t
 #define MAX_RECORD_HEADER_SIZE DTLS_RECORD_HEADER_SIZE
 
 #define MAX_USER_SEND_SIZE(session) (IS_DTLS(session)?((size_t)gnutls_dtls_get_data_mtu(session)):(size_t)session->security_parameters.max_record_send_size)
-#define MAX_RECORD_SEND_SIZE(session) (IS_DTLS(session)?((size_t)gnutls_dtls_get_mtu(session)):(size_t)session->security_parameters.max_record_send_size+MAX_RECORD_OVERHEAD)
+#define MAX_RECORD_SEND_SIZE(session) (IS_DTLS(session)?((size_t)gnutls_dtls_get_mtu(session)):(size_t)session->security_parameters.max_record_send_size+MAX_RECORD_OVERHEAD(session))
 #define MAX_RECORD_RECV_SIZE(session) ((size_t)session->security_parameters.max_record_recv_size)
 #define MAX_PAD_SIZE 255
 #define EXTRA_COMP_SIZE 2048
-#define MAX_RECORD_OVERHEAD (MAX_CIPHER_BLOCK_SIZE/*iv*/+MAX_PAD_SIZE+EXTRA_COMP_SIZE+MAX_HASH_SIZE/*MAC*/)
-#define MAX_RECV_SIZE(session) (MAX_RECORD_OVERHEAD+MAX_RECORD_RECV_SIZE(session)+RECORD_HEADER_SIZE(session))
+#define MAX_RECORD_OVERHEAD(session) (MAX_CIPHER_BLOCK_SIZE/*iv*/+MAX_PAD_SIZE+(gnutls_compression_get(session)!=GNUTLS_COMP_NULL)?EXTRA_COMP_SIZE:0+MAX_HASH_SIZE/*MAC*/)
+#define MAX_RECV_SIZE(session) (MAX_RECORD_OVERHEAD(session)+MAX_RECORD_RECV_SIZE(session)+RECORD_HEADER_SIZE(session))
 
 #define TLS_HANDSHAKE_HEADER_SIZE 4
 #define DTLS_HANDSHAKE_HEADER_SIZE (TLS_HANDSHAKE_HEADER_SIZE+8)
index aff6f9697981a25c8bb0cfa2aebc187f995d9039..0e215521517800fe235b7731912e1eaeca38773a 100644 (file)
@@ -51,13 +51,11 @@ static int get_max_decrypted_data(gnutls_session_t session)
 {
 int ret;
 
-  if (gnutls_compression_get (session) != GNUTLS_COMP_NULL ||
-      session->internals.priorities.allow_large_records != 0)
-    ret = MAX_RECORD_RECV_SIZE(session) + EXTRA_COMP_SIZE;
-  else
-    ret = MAX_RECORD_RECV_SIZE(session);
+  ret = MAX_RECORD_RECV_SIZE(session) + MAX_RECORD_OVERHEAD(session);
 
-  ret += MAX_PAD_SIZE + MAX_HASH_SIZE + MAX_CIPHER_BLOCK_SIZE;
+  if (session->internals.priorities.allow_large_records != 0 &&
+      gnutls_compression_get(session)==GNUTLS_COMP_NULL)
+    ret += EXTRA_COMP_SIZE;
 
   return ret;
 }