summaryrefslogtreecommitdiffstats
path: root/ssl/s3_both.c
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2006-10-20 11:26:00 +0000
committerAndy Polyakov <appro@openssl.org>2006-10-20 11:26:00 +0000
commita4d64c7f49d76d659b6ad482c4f788fc7274f651 (patch)
tree5ab6d7077b0882a5e8c8a59c2e7f6c08b67a0e4c /ssl/s3_both.c
parent1e7b6c029c829f010997c2bca59b40ccebb192a7 (diff)
Align data payload for better performance.
Diffstat (limited to 'ssl/s3_both.c')
-rw-r--r--ssl/s3_both.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/ssl/s3_both.c b/ssl/s3_both.c
index 09d72e545d..aaf1c2f625 100644
--- a/ssl/s3_both.c
+++ b/ssl/s3_both.c
@@ -589,13 +589,17 @@ int ssl_verify_alarm_type(long type)
int ssl3_setup_buffers(SSL *s)
{
unsigned char *p;
- size_t len;
+ size_t len,align=0;
+
+#if defined(SSL3_ALIGN_PAYLOAD) && SSL3_ALIGN_PAYLOAD!=0
+ align = (-SSL3_RT_HEADER_LENGTH)&(SSL3_ALIGN_PAYLOAD-1);
+#endif
if (s->s3->rbuf.buf == NULL)
{
len = SSL3_RT_MAX_PLAIN_LENGTH
+ SSL3_RT_MAX_ENCRYPTED_OVERHEAD
- + SSL3_RT_HEADER_LENGTH;
+ + SSL3_RT_HEADER_LENGTH + align;
if (s->options & SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER)
{
s->s3->init_extra = 1;
@@ -615,13 +619,13 @@ int ssl3_setup_buffers(SSL *s)
{
len = s->max_send_fragment
+ SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD
- + SSL3_RT_HEADER_LENGTH;
+ + SSL3_RT_HEADER_LENGTH + align;
#ifndef OPENSSL_NO_COMP
if (!(s->options & SSL_OP_NO_COMPRESSION))
len += SSL3_RT_MAX_COMPRESSED_OVERHEAD;
#endif
if (!(s->options & SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS))
- len += SSL3_RT_HEADER_LENGTH
+ len += SSL3_RT_HEADER_LENGTH + align
+ SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD;
if ((p=OPENSSL_malloc(len)) == NULL)
goto err;