BIO_read(3)                 OpenSSL                 BIO_read(3)





NAME
       BIO_read, BIO_write, BIO_gets, BIO_puts - BIO I/O func-
       tions

SYNOPSIS
        #include <openssl/bio.h>

        int    BIO_read(BIO *b, void *buf, int len);
        int    BIO_gets(BIO *b,char *buf, int size);
        int    BIO_write(BIO *b, const void *buf, int len);
        int    BIO_puts(BIO *b,const char *buf);

DESCRIPTION
       BIO_read() attempts to read len bytes from BIO b and
       places the data in buf.

       BIO_gets() performs the BIOs "gets" operation and places
       the data in buf. Usually this operation will attempt to
       read a line of data from the BIO of maximum length len.
       There are exceptions to this however, for example
       BIO_gets() on a digest BIO will calculate and return the
       digest and other BIOs may not support BIO_gets() at all.

       BIO_write() attempts to write len bytes from buf to BIO
       b.

       BIO_puts() attempts to write a null terminated string
       buf to BIO b

RETURN VALUES
       All these functions return either the amount of data
       successfully read or written (if the return value is
       positive) or that no data was successfully read or writ-
       ten if the result is 0 or -1. If the return value is -2
       then the operation is not implemented in the specific
       BIO type.

NOTES
       A 0 or -1 return is not necessarily an indication of an
       error. In particular when the source/sink is non-block-
       ing or of a certain type it may merely be an indication
       that no data is currently available and that the appli-
       cation should retry the operation later.

       One technique sometimes used with blocking sockets is to
       use a system call (such as select(), poll() or equiva-
       lent) to determine when data is available and then call
       read() to read the data. The equivalent with BIOs (that
       is call select() on the underlying I/O structure and
       then call BIO_read() to read the data) should not be
       used because a single call to BIO_read() can cause sev-
       eral reads (and writes in the case of SSL BIOs) on the
       underlying I/O structure and may block as a result.
       Instead select() (or equivalent) should be combined with
       non blocking I/O so successive reads will request a
       retry instead of blocking.

       See BIO_should_retry(3) for details of how to determine
       the cause of a retry and other I/O issues.

       If the BIO_gets() function is not supported by a BIO
       then it possible to work around this by adding a buffer-
       ing BIO BIO_f_buffer(3) to the chain.

SEE ALSO
       BIO_should_retry(3)

       TBA



0.9.7c                     2000-09-16               BIO_read(3)
