summaryrefslogtreecommitdiff
path: root/ssl/s3_msg.c
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2015-09-22 11:12:50 +0100
committerMatt Caswell <matt@openssl.org>2016-03-07 21:39:27 +0000
commitd102d9df8625cb6f75c537b7f2a696bb5f305ff2 (patch)
tree905ded5ae4a3c44de312bf87f5d7b91b949b0eb5 /ssl/s3_msg.c
parent98ee75439d7e844de6c063a4be5bd09b3cc9db53 (diff)
downloadopenssl-new-d102d9df8625cb6f75c537b7f2a696bb5f305ff2.tar.gz
Implement write pipeline support in libssl
Use the new pipeline cipher capability to encrypt multiple records being written out all in one go. Two new SSL/SSL_CTX parameters can be used to control how this works: max_pipelines and split_send_fragment. max_pipelines defines the maximum number of pipelines that can ever be used in one go for a single connection. It must always be less than or equal to SSL_MAX_PIPELINES (currently defined to be 32). By default only one pipeline will be used (i.e. normal non-parallel operation). split_send_fragment defines how data is split up into pipelines. The number of pipelines used will be determined by the amount of data provided to the SSL_write call divided by split_send_fragment. For example if split_send_fragment is set to 2000 and max_pipelines is 4 then: SSL_write called with 0-2000 bytes == 1 pipeline used SSL_write called with 2001-4000 bytes == 2 pipelines used SSL_write called with 4001-6000 bytes == 3 pipelines used SSL_write_called with 6001+ bytes == 4 pipelines used split_send_fragment must always be less than or equal to max_send_fragment. By default it is set to be equal to max_send_fragment. This will mean that the same number of records will always be created as would have been created in the non-parallel case, although the data will be apportioned differently. In the parallel case data will be spread equally between the pipelines. Reviewed-by: Tim Hudson <tjh@openssl.org>
Diffstat (limited to 'ssl/s3_msg.c')
-rw-r--r--ssl/s3_msg.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/ssl/s3_msg.c b/ssl/s3_msg.c
index 8b5fd23880..8df1e6677f 100644
--- a/ssl/s3_msg.c
+++ b/ssl/s3_msg.c
@@ -192,10 +192,12 @@ int ssl3_send_alert(SSL *s, int level, int desc)
int ssl3_dispatch_alert(SSL *s)
{
int i, j;
+ unsigned int alertlen;
void (*cb) (const SSL *ssl, int type, int val) = NULL;
s->s3->alert_dispatch = 0;
- i = do_ssl3_write(s, SSL3_RT_ALERT, &s->s3->send_alert[0], 2, 0);
+ alertlen = 2;
+ i = do_ssl3_write(s, SSL3_RT_ALERT, &s->s3->send_alert[0], &alertlen, 1, 0);
if (i <= 0) {
s->s3->alert_dispatch = 1;
} else {