=pod =head1 NAME SSL_dup, SSL_new, SSL_up_ref - create an SSL structure for a connection =head1 SYNOPSIS #include <openssl/ssl.h> SSL *SSL_dup(SSL *s); SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); =head1 DESCRIPTION SSL_new() creates a new B<SSL> structure which is needed to hold the data for a TLS/SSL connection. The new structure inherits the settings of the underlying context B<ctx>: connection method, options, verification settings, timeout settings. An B<SSL> structure is reference counted. Creating an B<SSL> structure for the first time increments the reference count. Freeing it (using SSL_free) decrements it. When the reference count drops to zero, any memory or resources allocated to the B<SSL> structure are freed. SSL_up_ref() increments the reference count for an existing B<SSL> structure. SSL_dup() duplicates an existing B<SSL> structure into a new allocated one. All settings are inherited from the original B<SSL> structure. Dynamic data (i.e. existing connection details) are not copied, the new B<SSL> is set into an initial accept (server) or connect (client) state. =head1 RETURN VALUES The following return values can occur: =over 4 =item NULL The creation of a new SSL structure failed. Check the error stack to find out the reason. =item Pointer to an SSL structure The return value points to an allocated SSL structure. SSL_up_ref() returns 1 for success and 0 for failure. =back =head1 SEE ALSO L<SSL_free(3)>, L<SSL_clear(3)>, L<SSL_CTX_set_options(3)>, L<SSL_get_SSL_CTX(3)>, L<ssl(7)> =head1 COPYRIGHT Copyright 2000-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