SSL_free.3ossl 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. .\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42)
  2. .\"
  3. .\" Standard preamble:
  4. .\" ========================================================================
  5. .de Sp \" Vertical space (when we can't use .PP)
  6. .if t .sp .5v
  7. .if n .sp
  8. ..
  9. .de Vb \" Begin verbatim text
  10. .ft CW
  11. .nf
  12. .ne \\$1
  13. ..
  14. .de Ve \" End verbatim text
  15. .ft R
  16. .fi
  17. ..
  18. .\" Set up some character translations and predefined strings. \*(-- will
  19. .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
  20. .\" double quote, and \*(R" will give a right double quote. \*(C+ will
  21. .\" give a nicer C++. Capital omega is used to do unbreakable dashes and
  22. .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
  23. .\" nothing in troff, for use with C<>.
  24. .tr \(*W-
  25. .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
  26. .ie n \{\
  27. . ds -- \(*W-
  28. . ds PI pi
  29. . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
  30. . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
  31. . ds L" ""
  32. . ds R" ""
  33. . ds C` ""
  34. . ds C' ""
  35. 'br\}
  36. .el\{\
  37. . ds -- \|\(em\|
  38. . ds PI \(*p
  39. . ds L" ``
  40. . ds R" ''
  41. . ds C`
  42. . ds C'
  43. 'br\}
  44. .\"
  45. .\" Escape single quotes in literal strings from groff's Unicode transform.
  46. .ie \n(.g .ds Aq \(aq
  47. .el .ds Aq '
  48. .\"
  49. .\" If the F register is >0, we'll generate index entries on stderr for
  50. .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
  51. .\" entries marked with X<> in POD. Of course, you'll have to process the
  52. .\" output yourself in some meaningful fashion.
  53. .\"
  54. .\" Avoid warning from groff about undefined register 'F'.
  55. .de IX
  56. ..
  57. .nr rF 0
  58. .if \n(.g .if rF .nr rF 1
  59. .if (\n(rF:(\n(.g==0)) \{\
  60. . if \nF \{\
  61. . de IX
  62. . tm Index:\\$1\t\\n%\t"\\$2"
  63. ..
  64. . if !\nF==2 \{\
  65. . nr % 0
  66. . nr F 2
  67. . \}
  68. . \}
  69. .\}
  70. .rr rF
  71. .\"
  72. .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  73. .\" Fear. Run. Save yourself. No user-serviceable parts.
  74. . \" fudge factors for nroff and troff
  75. .if n \{\
  76. . ds #H 0
  77. . ds #V .8m
  78. . ds #F .3m
  79. . ds #[ \f1
  80. . ds #] \fP
  81. .\}
  82. .if t \{\
  83. . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
  84. . ds #V .6m
  85. . ds #F 0
  86. . ds #[ \&
  87. . ds #] \&
  88. .\}
  89. . \" simple accents for nroff and troff
  90. .if n \{\
  91. . ds ' \&
  92. . ds ` \&
  93. . ds ^ \&
  94. . ds , \&
  95. . ds ~ ~
  96. . ds /
  97. .\}
  98. .if t \{\
  99. . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
  100. . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
  101. . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
  102. . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
  103. . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
  104. . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
  105. .\}
  106. . \" troff and (daisy-wheel) nroff accents
  107. .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
  108. .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
  109. .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
  110. .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
  111. .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
  112. .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
  113. .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
  114. .ds ae a\h'-(\w'a'u*4/10)'e
  115. .ds Ae A\h'-(\w'A'u*4/10)'E
  116. . \" corrections for vroff
  117. .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
  118. .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
  119. . \" for low resolution devices (crt and lpr)
  120. .if \n(.H>23 .if \n(.V>19 \
  121. \{\
  122. . ds : e
  123. . ds 8 ss
  124. . ds o a
  125. . ds d- d\h'-1'\(ga
  126. . ds D- D\h'-1'\(hy
  127. . ds th \o'bp'
  128. . ds Th \o'LP'
  129. . ds ae ae
  130. . ds Ae AE
  131. .\}
  132. .rm #[ #] #H #V #F C
  133. .\" ========================================================================
  134. .\"
  135. .IX Title "SSL_FREE 3ossl"
  136. .TH SSL_FREE 3ossl "2024-09-03" "3.3.2" "OpenSSL"
  137. .\" For nroff, turn off justification. Always turn off hyphenation; it makes
  138. .\" way too many mistakes in technical documents.
  139. .if n .ad l
  140. .nh
  141. .SH "NAME"
  142. SSL_free \- free an allocated SSL structure
  143. .SH "SYNOPSIS"
  144. .IX Header "SYNOPSIS"
  145. .Vb 1
  146. \& #include <openssl/ssl.h>
  147. \&
  148. \& void SSL_free(SSL *ssl);
  149. .Ve
  150. .SH "DESCRIPTION"
  151. .IX Header "DESCRIPTION"
  152. \&\fBSSL_free()\fR decrements the reference count of \fBssl\fR, and removes the \s-1SSL\s0
  153. structure pointed to by \fBssl\fR and frees up the allocated memory if the
  154. reference count has reached 0.
  155. If \fBssl\fR is \s-1NULL\s0 nothing is done.
  156. .SH "NOTES"
  157. .IX Header "NOTES"
  158. \&\fBSSL_free()\fR also calls the \fBfree()\fRing procedures for indirectly affected items, if
  159. applicable: the buffering \s-1BIO,\s0 the read and write BIOs,
  160. cipher lists specially created for this \fBssl\fR, the \fB\s-1SSL_SESSION\s0\fR.
  161. Do not explicitly free these indirectly freed up items before or after
  162. calling \fBSSL_free()\fR, as trying to free things twice may lead to program
  163. failure.
  164. .PP
  165. The ssl session has reference counts from two users: the \s-1SSL\s0 object, for
  166. which the reference count is removed by \fBSSL_free()\fR and the internal
  167. session cache. If the session is considered bad, because
  168. \&\fBSSL_shutdown\fR\|(3) was not called for the connection
  169. and \fBSSL_set_shutdown\fR\|(3) was not used to set the
  170. \&\s-1SSL_SENT_SHUTDOWN\s0 state, the session will also be removed
  171. from the session cache as required by \s-1RFC2246.\s0
  172. .PP
  173. When used to free a \s-1QUIC\s0 stream \s-1SSL\s0 object, the respective sending and receiving
  174. parts of the stream are reset unless those parts have already been concluded
  175. normally:
  176. .IP "\(bu" 4
  177. If the stream has a sending part (in other words, if it is bidirectional or a
  178. locally-initiated unidirectional stream) and that part has not been concluded
  179. via a call to \fBSSL_stream_conclude\fR\|(3) or \fBSSL_stream_reset\fR\|(3) on the \s-1QUIC\s0
  180. stream \s-1SSL\s0 object, a call to \fBSSL_free()\fR automatically resets the sending part of
  181. the stream as though \fBSSL_stream_reset\fR\|(3) were called with a \s-1QUIC\s0 application
  182. error code of 0.
  183. .IP "\(bu" 4
  184. If the stream has a receiving part (in other words, if it is bidirectional or a
  185. remotely-initiated unidirectional stream), and the peer has not yet concluded
  186. that part of the stream normally (such as via a call to
  187. \&\fBSSL_stream_conclude\fR\|(3) on its own end), a call to \fBSSL_free()\fR automatically
  188. requests the reset of the receiving part of the stream using a \s-1QUIC STOP_SENDING\s0
  189. frame with a \s-1QUIC\s0 application error code of 0. Note that as per the \s-1QUIC\s0
  190. protocol, this will automatically cause the peer to reset that part of the
  191. stream in turn (which is its sending part).
  192. .PP
  193. A \s-1QUIC\s0 stream \s-1SSL\s0 object maintains a reference to a \s-1QUIC\s0 connection \s-1SSL\s0 object
  194. internally, therefore a \s-1QUIC\s0 stream \s-1SSL\s0 object and its parent \s-1QUIC\s0 connection
  195. \&\s-1SSL\s0 object can be freed in either order.
  196. .SH "RETURN VALUES"
  197. .IX Header "RETURN VALUES"
  198. \&\fBSSL_free()\fR does not provide diagnostic information.
  199. .PP
  200. \&\fBSSL_new\fR\|(3), \fBSSL_clear\fR\|(3),
  201. \&\fBSSL_shutdown\fR\|(3), \fBSSL_set_shutdown\fR\|(3),
  202. \&\fBssl\fR\|(7)
  203. .SH "COPYRIGHT"
  204. .IX Header "COPYRIGHT"
  205. Copyright 2000\-2023 The OpenSSL Project Authors. All Rights Reserved.
  206. .PP
  207. Licensed under the Apache License 2.0 (the \*(L"License\*(R"). You may not use
  208. this file except in compliance with the License. You can obtain a copy
  209. in the file \s-1LICENSE\s0 in the source distribution or at
  210. <https://www.openssl.org/source/license.html>.