SSL_set_blocking_mode.3ossl 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. .\" -*- mode: troff; coding: utf-8 -*-
  2. .\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
  3. .\"
  4. .\" Standard preamble:
  5. .\" ========================================================================
  6. .de Sp \" Vertical space (when we can't use .PP)
  7. .if t .sp .5v
  8. .if n .sp
  9. ..
  10. .de Vb \" Begin verbatim text
  11. .ft CW
  12. .nf
  13. .ne \\$1
  14. ..
  15. .de Ve \" End verbatim text
  16. .ft R
  17. .fi
  18. ..
  19. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
  20. .ie n \{\
  21. . ds C` ""
  22. . ds C' ""
  23. 'br\}
  24. .el\{\
  25. . ds C`
  26. . ds C'
  27. 'br\}
  28. .\"
  29. .\" Escape single quotes in literal strings from groff's Unicode transform.
  30. .ie \n(.g .ds Aq \(aq
  31. .el .ds Aq '
  32. .\"
  33. .\" If the F register is >0, we'll generate index entries on stderr for
  34. .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
  35. .\" entries marked with X<> in POD. Of course, you'll have to process the
  36. .\" output yourself in some meaningful fashion.
  37. .\"
  38. .\" Avoid warning from groff about undefined register 'F'.
  39. .de IX
  40. ..
  41. .nr rF 0
  42. .if \n(.g .if rF .nr rF 1
  43. .if (\n(rF:(\n(.g==0)) \{\
  44. . if \nF \{\
  45. . de IX
  46. . tm Index:\\$1\t\\n%\t"\\$2"
  47. ..
  48. . if !\nF==2 \{\
  49. . nr % 0
  50. . nr F 2
  51. . \}
  52. . \}
  53. .\}
  54. .rr rF
  55. .\" ========================================================================
  56. .\"
  57. .IX Title "SSL_SET_BLOCKING_MODE 3ossl"
  58. .TH SSL_SET_BLOCKING_MODE 3ossl 2025-01-17 3.4.0 OpenSSL
  59. .\" For nroff, turn off justification. Always turn off hyphenation; it makes
  60. .\" way too many mistakes in technical documents.
  61. .if n .ad l
  62. .nh
  63. .SH NAME
  64. SSL_set_blocking_mode, SSL_get_blocking_mode \- configure blocking mode for a
  65. QUIC SSL object
  66. .SH SYNOPSIS
  67. .IX Header "SYNOPSIS"
  68. .Vb 1
  69. \& #include <openssl/ssl.h>
  70. \&
  71. \& int SSL_set_blocking_mode(SSL *s, int blocking);
  72. \& int SSL_get_blocking_mode(SSL *s);
  73. .Ve
  74. .SH DESCRIPTION
  75. .IX Header "DESCRIPTION"
  76. \&\fBSSL_set_blocking_mode()\fR can be used to enable or disable blocking mode on a QUIC
  77. connection SSL object. By default, blocking is enabled, unless the SSL object is
  78. configured to use an underlying read or write BIO which cannot provide a poll
  79. descriptor (see \fBBIO_get_rpoll_descriptor\fR\|(3)), as blocking mode cannot be
  80. supported in this case.
  81. .PP
  82. To enable blocking mode, call \fBSSL_set_blocking_mode()\fR with \fIblocking\fR set to 1;
  83. to disable it, call \fBSSL_set_blocking_mode()\fR with \fIblocking\fR set to 0.
  84. .PP
  85. To retrieve the current blocking mode, call \fBSSL_get_blocking_mode()\fR.
  86. .PP
  87. Blocking mode means that calls such as \fBSSL_read()\fR and \fBSSL_write()\fR will block
  88. until the requested operation can be performed. In nonblocking mode, these
  89. calls will fail if the requested operation cannot be performed immediately; see
  90. \&\fBSSL_get_error\fR\|(3).
  91. .PP
  92. These functions are only applicable to QUIC connection SSL objects. Other kinds
  93. of SSL object, such as those for TLS, automatically function in blocking or
  94. nonblocking mode based on whether the underlying network read and write BIOs
  95. provided to the SSL object are themselves configured in nonblocking mode.
  96. .PP
  97. Where a QUIC connection SSL object is used in nonblocking mode, an application
  98. is responsible for ensuring that the SSL object is ticked regularly; see
  99. \&\fBSSL_handle_events\fR\|(3).
  100. .PP
  101. Blocking mode is disabled automatically if the application provides a QUIC
  102. connection SSL object with a network BIO which cannot support blocking mode. To
  103. re-enable blocking mode in this case, an application must set a network BIO
  104. which can support blocking mode and explicitly call \fBSSL_set_blocking_mode()\fR.
  105. .SH "RETURN VALUES"
  106. .IX Header "RETURN VALUES"
  107. \&\fBSSL_set_blocking_mode()\fR returns 1 on success and 0 on failure. The function
  108. fails if called on a SSL object which does not represent a QUIC connection,
  109. or if blocking mode cannot be used for the given connection.
  110. .PP
  111. \&\fBSSL_get_blocking_mode()\fR returns 1 if blocking is currently enabled. It returns
  112. \&\-1 if called on an unsupported SSL object.
  113. .SH "SEE ALSO"
  114. .IX Header "SEE ALSO"
  115. \&\fBSSL_handle_events\fR\|(3), \fBssl\fR\|(7)
  116. .SH HISTORY
  117. .IX Header "HISTORY"
  118. The \fBSSL_set_blocking_mode()\fR and \fBSSL_get_blocking_mode()\fR functions were added in
  119. OpenSSL 3.2.
  120. .SH COPYRIGHT
  121. .IX Header "COPYRIGHT"
  122. Copyright 2022\-2023 The OpenSSL Project Authors. All Rights Reserved.
  123. .PP
  124. Licensed under the Apache License 2.0 (the "License"). You may not use
  125. this file except in compliance with the License. You can obtain a copy
  126. in the file LICENSE in the source distribution or at
  127. <https://www.openssl.org/source/license.html>.