SSL_want.pod 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. =pod
  2. =head1 NAME
  3. SSL_want, SSL_want_nothing, SSL_want_read, SSL_want_write, SSL_want_x509_lookup,
  4. SSL_want_async, SSL_want_async_job, SSL_want_client_hello_cb - obtain state
  5. information TLS/SSL I/O operation
  6. =head1 SYNOPSIS
  7. #include <openssl/ssl.h>
  8. int SSL_want(const SSL *ssl);
  9. int SSL_want_nothing(const SSL *ssl);
  10. int SSL_want_read(const SSL *ssl);
  11. int SSL_want_write(const SSL *ssl);
  12. int SSL_want_x509_lookup(const SSL *ssl);
  13. int SSL_want_async(const SSL *ssl);
  14. int SSL_want_async_job(const SSL *ssl);
  15. int SSL_want_client_hello_cb(const SSL *ssl);
  16. =head1 DESCRIPTION
  17. SSL_want() returns state information for the SSL object B<ssl>.
  18. The other SSL_want_*() calls are shortcuts for the possible states returned
  19. by SSL_want().
  20. =head1 NOTES
  21. SSL_want() examines the internal state information of the SSL object. Its
  22. return values are similar to that of L<SSL_get_error(3)>.
  23. Unlike L<SSL_get_error(3)>, which also evaluates the
  24. error queue, the results are obtained by examining an internal state flag
  25. only. The information must therefore only be used for normal operation under
  26. non-blocking I/O. Error conditions are not handled and must be treated
  27. using L<SSL_get_error(3)>.
  28. The result returned by SSL_want() should always be consistent with
  29. the result of L<SSL_get_error(3)>.
  30. =head1 RETURN VALUES
  31. The following return values can currently occur for SSL_want():
  32. =over 4
  33. =item SSL_NOTHING
  34. There is no data to be written or to be read.
  35. =item SSL_WRITING
  36. There are data in the SSL buffer that must be written to the underlying
  37. B<BIO> layer in order to complete the actual SSL_*() operation.
  38. A call to L<SSL_get_error(3)> should return
  39. SSL_ERROR_WANT_WRITE.
  40. =item SSL_READING
  41. More data must be read from the underlying B<BIO> layer in order to
  42. complete the actual SSL_*() operation.
  43. A call to L<SSL_get_error(3)> should return
  44. SSL_ERROR_WANT_READ.
  45. =item SSL_X509_LOOKUP
  46. The operation did not complete because an application callback set by
  47. SSL_CTX_set_client_cert_cb() has asked to be called again.
  48. A call to L<SSL_get_error(3)> should return
  49. SSL_ERROR_WANT_X509_LOOKUP.
  50. =item SSL_ASYNC_PAUSED
  51. An asynchronous operation partially completed and was then paused. See
  52. L<SSL_get_all_async_fds(3)>. A call to L<SSL_get_error(3)> should return
  53. SSL_ERROR_WANT_ASYNC.
  54. =item SSL_ASYNC_NO_JOBS
  55. The asynchronous job could not be started because there were no async jobs
  56. available in the pool (see ASYNC_init_thread(3)). A call to L<SSL_get_error(3)>
  57. should return SSL_ERROR_WANT_ASYNC_JOB.
  58. =item SSL_CLIENT_HELLO_CB
  59. The operation did not complete because an application callback set by
  60. SSL_CTX_set_client_hello_cb() has asked to be called again.
  61. A call to L<SSL_get_error(3)> should return
  62. SSL_ERROR_WANT_CLIENT_HELLO_CB.
  63. =back
  64. SSL_want_nothing(), SSL_want_read(), SSL_want_write(), SSL_want_x509_lookup(),
  65. SSL_want_async(), SSL_want_async_job(), and SSL_want_client_hello_cb() return
  66. 1, when the corresponding condition is true or 0 otherwise.
  67. =head1 SEE ALSO
  68. L<ssl(7)>, L<SSL_get_error(3)>
  69. =head1 HISTORY
  70. The SSL_want_client_hello_cb() function and the SSL_CLIENT_HELLO_CB return value
  71. were added in OpenSSL 1.1.1.
  72. =head1 COPYRIGHT
  73. Copyright 2001-2017 The OpenSSL Project Authors. All Rights Reserved.
  74. Licensed under the Apache License 2.0 (the "License"). You may not use
  75. this file except in compliance with the License. You can obtain a copy
  76. in the file LICENSE in the source distribution or at
  77. L<https://www.openssl.org/source/license.html>.
  78. =cut