Deleted Added
full compact
SSL_get_error.pod (59191) SSL_get_error.pod (68651)
1=pod
2
3=head1 NAME
4
1=pod
2
3=head1 NAME
4
5SSL_get_error - obtain result code for SSL I/O operation
5SSL_get_error - obtain result code for TLS/SSL I/O operation
6
7=head1 SYNOPSIS
8
9 #include <openssl/ssl.h>
10
11 int SSL_get_error(SSL *ssl, int ret);
12
13=head1 DESCRIPTION
14
15SSL_get_error() returns a result code (suitable for the C "switch"
16statement) for a preceding call to SSL_connect(), SSL_accept(),
17SSL_read(), or SSL_write() on B<ssl>. The value returned by that
6
7=head1 SYNOPSIS
8
9 #include <openssl/ssl.h>
10
11 int SSL_get_error(SSL *ssl, int ret);
12
13=head1 DESCRIPTION
14
15SSL_get_error() returns a result code (suitable for the C "switch"
16statement) for a preceding call to SSL_connect(), SSL_accept(),
17SSL_read(), or SSL_write() on B<ssl>. The value returned by that
18SSL I/O function must be passed to SSL_get_error() in parameter
18TLS/SSL I/O function must be passed to SSL_get_error() in parameter
19B<ret>.
20
21In addition to B<ssl> and B<ret>, SSL_get_error() inspects the
22current thread's OpenSSL error queue. Thus, SSL_get_error() must be
19B<ret>.
20
21In addition to B<ssl> and B<ret>, SSL_get_error() inspects the
22current thread's OpenSSL error queue. Thus, SSL_get_error() must be
23used in the same thread that performed the SSL I/O operation, and no
23used in the same thread that performed the TLS/SSL I/O operation, and no
24other OpenSSL function calls should appear in between. The current
24other OpenSSL function calls should appear in between. The current
25thread's error queue must be empty before the SSL I/O operation is
25thread's error queue must be empty before the TLS/SSL I/O operation is
26attempted, or SSL_get_error() will not work reliably.
27
28=head1 RETURN VALUES
29
30The following return values can currently occur:
31
32=over 4
33
34=item SSL_ERROR_NONE
35
26attempted, or SSL_get_error() will not work reliably.
27
28=head1 RETURN VALUES
29
30The following return values can currently occur:
31
32=over 4
33
34=item SSL_ERROR_NONE
35
36The SSL I/O operation completed. This result code is returned
36The TLS/SSL I/O operation completed. This result code is returned
37if and only if B<ret E<gt> 0>.
38
39=item SSL_ERROR_ZERO_RETURN
40
37if and only if B<ret E<gt> 0>.
38
39=item SSL_ERROR_ZERO_RETURN
40
41The SSL connection has been closed. If the protocol version is SSL 3.0
41The TLS/SSL connection has been closed. If the protocol version is SSL 3.0
42or TLS 1.0, this result code is returned only if a closure
42or TLS 1.0, this result code is returned only if a closure
43alerts has occurred in the protocol, i.e. if the connection has been
44closed cleanly.
43alert has occurred in the protocol, i.e. if the connection has been
44closed cleanly. Note that in this case B<SSL_ERROR_ZERO_RETURN>
45does not necessarily indicate that the underlying transport
46has been closed.
45
46=item SSL_ERROR_WANT_READ, SSL_ERROR_WANT_WRITE
47
47
48=item SSL_ERROR_WANT_READ, SSL_ERROR_WANT_WRITE
49
48The operation did not complete; the same SSL I/O function should be
50The operation did not complete; the same TLS/SSL I/O function should be
49called again later. There will be protocol progress if, by then, the
50underlying B<BIO> has data available for reading (if the result code is
51B<SSL_ERROR_WANT_READ>) or allows writing data (B<SSL_ERROR_WANT_WRITE>).
52For socket B<BIO>s (e.g. when SSL_set_fd() was used) this means that
53select() or poll() on the underlying socket can be used to find out
51called again later. There will be protocol progress if, by then, the
52underlying B<BIO> has data available for reading (if the result code is
53B<SSL_ERROR_WANT_READ>) or allows writing data (B<SSL_ERROR_WANT_WRITE>).
54For socket B<BIO>s (e.g. when SSL_set_fd() was used) this means that
55select() or poll() on the underlying socket can be used to find out
54when the SSL I/O function should be retried.
56when the TLS/SSL I/O function should be retried.
55
57
56Caveat: Any SSL I/O function can lead to either of
58Caveat: Any TLS/SSL I/O function can lead to either of
57B<SSL_ERROR_WANT_READ> and B<SSL_ERROR_WANT_WRITE>, i.e. SSL_read()
58may want to write data and SSL_write() may want to read data.
59
60=item SSL_ERROR_WANT_X509_LOOKUP
61
62The operation did not complete because an application callback set by
63SSL_CTX_set_client_cert_cb() has asked to be called again.
59B<SSL_ERROR_WANT_READ> and B<SSL_ERROR_WANT_WRITE>, i.e. SSL_read()
60may want to write data and SSL_write() may want to read data.
61
62=item SSL_ERROR_WANT_X509_LOOKUP
63
64The operation did not complete because an application callback set by
65SSL_CTX_set_client_cert_cb() has asked to be called again.
64The SSL I/O function should be called again later.
66The TLS/SSL I/O function should be called again later.
65Details depend on the application.
66
67=item SSL_ERROR_SYSCALL
68
69Some I/O error occurred. The OpenSSL error queue may contain more
70information on the error. If the error queue is empty
71(i.e. ERR_get_error() returns 0), B<ret> can be used to find out more
72about the error: If B<ret == 0>, an EOF was observed that violates

--- 19 unchanged lines hidden ---
67Details depend on the application.
68
69=item SSL_ERROR_SYSCALL
70
71Some I/O error occurred. The OpenSSL error queue may contain more
72information on the error. If the error queue is empty
73(i.e. ERR_get_error() returns 0), B<ret> can be used to find out more
74about the error: If B<ret == 0>, an EOF was observed that violates

--- 19 unchanged lines hidden ---