Matt Caswell d102d9df86 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>
2016-03-07 21:39:27 +00:00
..
2016-01-26 16:40:43 -05:00
2016-03-04 17:06:13 +00:00
2016-02-11 12:40:32 -05:00
2016-01-26 16:40:43 -05:00
2016-02-02 17:17:38 +00:00
2016-02-01 16:21:57 +01:00
2016-01-26 16:40:43 -05:00
2016-01-26 16:40:43 -05:00
2016-01-26 16:40:43 -05:00
2016-01-26 16:40:43 -05:00
2015-05-12 10:24:48 -04:00
2016-01-26 16:40:43 -05:00
2016-02-15 16:25:10 +01:00
2016-01-29 11:53:32 +00:00
2016-01-26 16:40:43 -05:00
2016-02-05 15:25:50 -05:00
2016-01-26 16:40:43 -05:00
2016-01-26 16:40:43 -05:00
2016-03-02 20:48:12 +00:00
2015-12-09 22:09:20 +00:00
2015-12-09 22:09:20 +00:00
2016-03-07 13:36:17 +00:00
2016-03-02 21:30:56 +00:00
2016-01-26 16:40:43 -05:00
2016-01-27 19:05:50 -05:00
2016-03-03 18:21:20 -05:00
2016-01-26 16:40:43 -05:00
2016-01-28 09:18:21 -05:00
2016-01-26 16:40:43 -05:00
2016-01-26 16:40:43 -05:00
2016-01-26 16:40:43 -05:00
2016-03-03 18:21:20 -05:00
2016-01-26 16:40:43 -05:00
2016-02-05 15:25:50 -05:00
2016-02-25 11:52:37 -05:00
2016-02-27 10:58:16 -05:00
2016-03-01 20:03:25 +00:00
2016-01-26 16:40:43 -05:00
2016-02-23 08:42:03 -05:00
2016-02-08 19:10:12 +00:00
2016-01-26 16:40:43 -05:00
2016-01-27 19:05:50 -05:00
2016-01-26 16:40:43 -05:00
2016-01-26 16:40:43 -05:00
2016-01-26 16:40:43 -05:00
2016-01-26 16:40:43 -05:00
2016-01-26 16:40:43 -05:00
2016-02-25 15:42:48 +01:00
2016-01-26 16:40:43 -05:00
2016-01-26 16:40:43 -05:00
2016-02-10 14:36:32 +01:00
2016-03-04 10:50:10 -05:00
2016-01-26 16:40:43 -05:00
2016-01-26 16:40:43 -05:00
2016-02-05 15:25:50 -05:00
2016-01-26 16:40:43 -05:00