diff options
author | Todd Short <tshort@akamai.com> | 2017-01-13 11:00:26 -0500 |
---|---|---|
committer | Rich Salz <rsalz@openssl.org> | 2017-07-26 11:42:17 -0400 |
commit | a58eb06d527c86492d4205feeb0e20bf19a1181d (patch) | |
tree | 2a637ed40c13437a2a2b219e667276c8c963f183 /doc/man3 | |
parent | 0a3452520fe4cd6871ae8b7c4199c6d5d4efe912 (diff) |
Add support to free/allocate SSL buffers
OpenSSL already has the feature of SSL_MODE_RELEASE_BUFFERS that can
be set to release the read or write buffers when data has finished
reading or writing. OpenSSL will automatically re-allocate the buffers
as needed. This can be quite aggressive in terms of memory allocation.
This provides a manual mechanism. SSL_free_buffers() will free
the data buffers if there's no pending data. SSL_alloc_buffers()
will realloc them; but this function is not strictly necessary, as it's
still done automatically in the state machine.
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/2240)
Diffstat (limited to 'doc/man3')
-rw-r--r-- | doc/man3/SSL_alloc_buffers.pod | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/doc/man3/SSL_alloc_buffers.pod b/doc/man3/SSL_alloc_buffers.pod new file mode 100644 index 0000000000..de33efb937 --- /dev/null +++ b/doc/man3/SSL_alloc_buffers.pod @@ -0,0 +1,67 @@ +=pod + +=head1 NAME + +SSL_free_buffers, SSL_alloc_buffers - manage SSL structure buffers + +=head1 SYNOPSIS + + #include <openssl/ssl.h> + + int SSL_free_buffers(SSL *ssl); + int SSL_alloc_buffers(SSL *ssl); + +=head1 DESCRIPTION + +SSL_free_buffers() frees the read and write buffers of the given B<ssl>. +SSL_alloc_buffers() allocates the read and write buffers of the given B<ssl>. + +The B<SSL_MODE_RELEASE_BUFFERS> mode releases read or write buffers whenever +the buffers have been drained. These functions allow applications to manually +control when buffers are freed and allocated. + +After freeing the buffers, the buffers are automatically reallocted upon a +new read or write. The SSL_alloc_buffers() does not need to be called, but +can be used to make sure the buffers are pre-allocated. This can be used to +avoid allocation during data processing or with CRYPTO_set_mem_functions() +to control where and how buffers are allocated. + +=head1 RETURN VALUES + +The following return values can occur: + +=over 4 + +=item 0 (Failure) + +The SSL_free_buffers() function returns 0 when there is pending data to be +read or written. The SSL_alloc_buffers() function returns 0 when there is +an allocation failure. + +=item 1 (Success) + +The SSL_free_buffers() function returns 1 if the buffers have been freed. This +value is also returned if the buffers had been freed before calling +SSL_free_buffers(). +The SSL_alloc_buffers() function returns 1 if the buffers have been allocated. +This valus is also returned if the buffers had been allocated before calling +SSL_alloc_buffers(). + +=back + +=head1 SEE ALSO + +L<SSL_free(3)>, L<SSL_clear(3)>, +L<SSL_new(3)>, L<SSL_CTX_set_mode(3)>, +L<CRYPTO_set_mem_functions> + +=head1 COPYRIGHT + +Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. + +Licensed under the OpenSSL license (the "License"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file LICENSE in the source distribution or at +L<https://www.openssl.org/source/license.html>. + +=cut |