1=pod 2 3=head1 NAME 4 5SSL_accept - wait for a TLS/SSL client to initiate a TLS/SSL handshake 6 7=head1 SYNOPSIS 8 9 #include <openssl/ssl.h> 10 11 int SSL_accept(SSL *ssl); 12 13=head1 DESCRIPTION 14 15SSL_accept() waits for a TLS/SSL client to initiate the TLS/SSL handshake. 16The communication channel must already have been set and assigned to the 17B<ssl> by setting an underlying B<BIO>. 18 19=head1 NOTES 20 21The behaviour of SSL_accept() depends on the underlying BIO. 22 23If the underlying BIO is B<blocking>, SSL_accept() will only return once the 24handshake has been finished or an error occurred. 25 26If the underlying BIO is B<non-blocking>, SSL_accept() will also return 27when the underlying BIO could not satisfy the needs of SSL_accept() 28to continue the handshake, indicating the problem by the return value -1. 29In this case a call to SSL_get_error() with the 30return value of SSL_accept() will yield B<SSL_ERROR_WANT_READ> or 31B<SSL_ERROR_WANT_WRITE>. The calling process then must repeat the call after 32taking appropriate action to satisfy the needs of SSL_accept(). 33The action depends on the underlying BIO. When using a non-blocking socket, 34nothing is to be done, but select() can be used to check for the required 35condition. When using a buffering BIO, like a BIO pair, data must be written 36into or retrieved out of the BIO before being able to continue. 37 38=head1 RETURN VALUES 39 40The following return values can occur: 41 42=over 4 43 44=item Z<>0 45 46The TLS/SSL handshake was not successful but was shut down controlled and 47by the specifications of the TLS/SSL protocol. Call SSL_get_error() with the 48return value B<ret> to find out the reason. 49 50=item Z<>1 51 52The TLS/SSL handshake was successfully completed, a TLS/SSL connection has been 53established. 54 55=item E<lt>0 56 57The TLS/SSL handshake was not successful because a fatal error occurred either 58at the protocol level or a connection failure occurred. The shutdown was 59not clean. It can also occur if action is needed to continue the operation 60for non-blocking BIOs. Call SSL_get_error() with the return value B<ret> 61to find out the reason. 62 63=back 64 65=head1 SEE ALSO 66 67L<SSL_get_error(3)>, L<SSL_connect(3)>, 68L<SSL_shutdown(3)>, L<ssl(7)>, L<bio(7)>, 69L<SSL_set_connect_state(3)>, 70L<SSL_do_handshake(3)>, 71L<SSL_CTX_new(3)> 72 73=head1 COPYRIGHT 74 75Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved. 76 77Licensed under the OpenSSL license (the "License"). You may not use 78this file except in compliance with the License. You can obtain a copy 79in the file LICENSE in the source distribution or at 80L<https://www.openssl.org/source/license.html>. 81 82=cut 83