X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=doc%2Fssl%2FSSL_read.pod;h=9bff32500b89900dcd3470873a45fa90925b3839;hp=9df51030c58846d3ceb8984b833b622ae9a7c4fc;hb=0fa504b68d429d2043a1741f9c71dbfb01850ed6;hpb=cc99526db1ee5b948736f6b07958a786fec1240b diff --git a/doc/ssl/SSL_read.pod b/doc/ssl/SSL_read.pod index 9df51030c5..9bff32500b 100644 --- a/doc/ssl/SSL_read.pod +++ b/doc/ssl/SSL_read.pod @@ -2,7 +2,7 @@ =head1 NAME -SSL_read - Read bytes from a TLS connection. +SSL_read - read bytes from a TLS/SSL connection. =head1 SYNOPSIS @@ -13,20 +13,24 @@ SSL_read - Read bytes from a TLS connection. =head1 DESCRIPTION SSL_read() tries to read B bytes from the specified B into the -buffer B. If necessary, SSL_read() will negotiate a TLS session, if -not already explicitely performed by SSL_connect() or SSL_accept(). If the +buffer B. + +=head1 NOTES + +If necessary, SSL_read() will negotiate a TLS/SSL session, if +not already explicitly performed by SSL_connect() or SSL_accept(). If the peer requests a re-negotiation, it will be performed transparently during the SSL_read() operation. The behaviour of SSL_read() depends on the underlying BIO. If the underlying BIO is B, SSL_read() will only return, once the -read operation has been finished or an error occured. +read operation has been finished or an error occurred. -If the underlying BIO is B, SSL_read() will also return, +If the underlying BIO is B, SSL_read() will also return when the underlying BIO could not satisfy the needs of SSL_read() to continue the operation. In this case a call to SSL_get_error() with the -return value of SSL_read() will yield SSL_ERROR_WANT_READ or -SSL_ERROR_WANT_WRITE. As at any time a re-negotiation is possible, a +return value of SSL_read() will yield B or +B. As at any time a re-negotiation is possible, a call to SSL_read() can also cause write operations! The calling process then must repeat the call after taking appropriate action to satisfy the needs of SSL_read(). The action depends on the underlying BIO. When using a @@ -34,6 +38,12 @@ non-blocking socket, nothing is to be done, but select() can be used to check for the required condition. When using a buffering BIO, like a BIO pair, data must be written into or retrieved out of the BIO before being able to continue. +=head1 WARNING + +When an SSL_read() operation has to be repeated because of +B or B, it must be repeated +with the same arguments. + =head1 RETURN VALUES The following return values can occur: @@ -42,18 +52,18 @@ The following return values can occur: =item E0 -The read operation was successfull, the return value is the number of -bytes actually read from the TLS connection. +The read operation was successful; the return value is the number of +bytes actually read from the TLS/SSL connection. =item 0 -The read operation was not successfull, probably because no data was +The read operation was not successful, probably because no data was available. Call SSL_get_error() with the return value B to find out, -whether an error occured. +whether an error occurred. -=item -1 +=item E0 -The read operation was not successfull, because either an error occured +The read operation was not successful, because either an error occurred or action must be taken by the calling process. Call SSL_get_error() with the return value B to find out the reason.