dwww Home | Manual pages | Find package

BIO_SET_FLAGS(3SSL)                 OpenSSL                 BIO_SET_FLAGS(3SSL)

NAME
       BIO_set_flags, BIO_clear_flags, BIO_test_flags, BIO_get_flags,
       BIO_set_retry_read, BIO_set_retry_write, BIO_set_retry_special,
       BIO_clear_retry_flags, BIO_get_retry_flags - manipulate and interpret
       BIO flags

SYNOPSIS
        #include <openssl/bio.h>

        void BIO_set_flags(BIO *b, int flags);
        void BIO_clear_flags(BIO *b, int flags);
        int  BIO_test_flags(const BIO *b, int flags);
        int  BIO_get_flags(const BIO *b);

        void BIO_set_retry_read(BIO *b);
        void BIO_set_retry_write(BIO *b);
        void BIO_set_retry_special(BIO *b);
        void BIO_clear_retry_flags(BIO *b);
        int  BIO_get_retry_flags(BIO *b);

DESCRIPTION
       A BIO has an internal set of bit flags that describe its state.  These
       functions and macros are used primarily by BIO implementations and by
       code that builds BIO chains to manipulate those flags.

       BIO_set_flags() sets the bits given in flags in the BIO b.  Any bits
       already set in the BIO's flag word remain set.

       BIO_clear_flags() clears the bits given in flags from the BIO b.  Any
       other bits in the flag word are left unchanged.

       BIO_test_flags() tests the bits given in flags in the BIO b and returns
       a nonzero value if any of them are currently set and zero otherwise.

       BIO_get_flags() returns the current flag word from the BIO b.  This is
       equivalent to testing for all bits and returning the result.

       The following convenience macros are built on top of these primitives
       and are used to maintain the retry state of a BIO:

       BIO_set_retry_read() marks the BIO b as being in a retryable state by
       setting the BIO_FLAGS_SHOULD_RETRY flag. In addition, it sets the
       BIO_FLAGS_READ flag to indicate that the retry condition is associated
       with a read operation.

       BIO_set_retry_write() marks the BIO b as being in a retryable state by
       setting the BIO_FLAGS_SHOULD_RETRY flag. In addition, it sets the
       BIO_FLAGS_WRITE flag to indicate that the retry condition is associated
       with a write operation.

       BIO_set_retry_special() marks the BIO b as being in a retryable state by
       setting the BIO_FLAGS_SHOULD_RETRY flag. In addition, it sets the
       BIO_FLAGS_IO_SPECIAL flag to indicate that the retry condition is
       associated with a read operation some "special" condition.  The precise
       meaning of this condition depends on the BIO type.

       BIO_clear_retry_flags() clears all retry-related bits from b, i.e.
       BIO_FLAGS_READ, BIO_FLAGS_WRITE, BIO_FLAGS_IO_SPECIAL, and
       BIO_FLAGS_SHOULD_RETRY.

       BIO_get_retry_flags() returns retry-related bits that are currently set
       in b.  The result is a subset of BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY.

       The retry bits are interpreted by the higher level macros
       BIO_should_read(), BIO_should_write(), BIO_should_io_special(),
       BIO_retry_type() and BIO_should_retry(), as documented in
       BIO_should_retry(3).  Application code will typically use those macros
       rather than manipulate the underlying flags directly.

       The following flag bits are currently defined for use with
       BIO_set_flags(), BIO_clear_flags() and BIO_test_flags():

       BIO_FLAGS_READ
           The  last  I/O  operation  should  be  retried  when the BIO becomes
           readable.  This flag is normally set by the BIO  implementation  via
           BIO_set_retry_read() after a failed read operation.

       BIO_FLAGS_WRITE
           The  last  I/O  operation  should  be  retried  when the BIO becomes
           writable.  This flag is normally set by the BIO  implementation  via
           BIO_set_retry_write() after a failed write operation.

       BIO_FLAGS_IO_SPECIAL
           The  last  I/O  operation  should  be  retried  when  some "special"
           condition becomes true.   The  precise  meaning  of  this  condition
           depends   on   the   BIO   type   and   is   usually   obtained  via
           BIO_get_retry_BIO()  and  BIO_get_retry_reason()  as  described   in
           BIO_should_retry(3).    This   flag  is  normally  set  by  the  BIO
           implementation via BIO_set_retry_special().

       BIO_FLAGS_RWS
           The   bitwise   OR   of    BIO_FLAGS_READ,    BIO_FLAGS_WRITE    and
           BIO_FLAGS_IO_SPECIAL.  This mask is used when clearing or extracting
           the retry-direction bits.

       BIO_FLAGS_SHOULD_RETRY
           Set  if  the  last  I/O  operation on the BIO should be retried at a
           later time.  If this bit is not set then the condition is treated as
           an error.  This flag is normally set by the BIO implementation.

       BIO_FLAGS_BASE64_NO_NL
           When set on a base64 filter BIO this flag disables the generation of
           newline characters in the encoded output and causes newlines  to  be
           ignored  in  the  input.  See also BIO_f_base64(3).  The flag has no
           effect on any other built-in BIO types.

       BIO_FLAGS_MEM_RDONLY
           When set on a memory BIO this flag  indicates  that  the  underlying
           buffer  is  read  only.   Attempts to write to such a BIO will fail.
           The flag has no effect on any other built-in BIO types.

       BIO_FLAGS_NONCLEAR_RST
           On a memory BIO this flag modifies  the  behaviour  of  BIO_reset().
           When  it  is  set,  resetting  the BIO does not clear the underlying
           buffer but only resets the current read position.  The flag  has  no
           effect on any other built-in BIO types.

       BIO_FLAGS_IN_EOF
           This  flag  may be used by a BIO implementation to indicate that the
           end of the input stream has been reached.  However,  BIO  types  are
           not required to use this flag to signal end-of-file conditions; they
           may rely on other mechanisms such as system calls or by querying the
           next BIO in a chain.  Applications must therefore not test this flag
           directly  to  determine  whether  EOF has been reached, and must use
           BIO_eof() instead.

       A range of additional flag  values  is  reserved  for  internal  use  by
       OpenSSL   to  track  kernel  TLS  (KTLS)  state.   This  range  and  the
       corresponding flag macros are not part of the public API and must not be
       used by applications.

RETURN VALUES
       BIO_get_flags() returns a bit mask of the flags  currently  set  on  the
       BIO.

       BIO_test_flags()  returns  a bit mask consisting of those flags from the
       argument that are currently set in the BIO. Consequently, it  returns  a
       nonzero value if and only if at least one of the requested flags is set.

       BIO_get_retry_flags()  returns a bit mask consisting of those flags from
       BIO_FLAGS_READ,     BIO_FLAGS_WRITE,      BIO_FLAGS_IO_SPECIAL,      and
       BIO_FLAGS_SHOULD_RETRY that are currently set in the BIO.

NOTES
       Ordinary  application  code  will  rarely  need to call BIO_set_flags(),
       BIO_clear_flags() or BIO_test_flags() directly.  They are  intended  for
       BIO  implementations and for code that forwards retry state from one BIO
       in a chain to another.   After  a  failed  I/O  operation,  applications
       should  normally  use BIO_should_retry() and related macros as described
       in BIO_should_retry(3) instead of inspecting the flags directly.

       These functions and macros are not  thread-safe.  If  a  single  BIO  is
       accessed  from  multiple  threads,  the  caller must provide appropriate
       external synchronisation.

SEE ALSO
       BIO_should_retry(3), BIO_f_base64(3), bio(7)

HISTORY
       The functions and macros described here have been available  in  OpenSSL
       since at least 1.1.0 (BIO_FLAGS_IN_EOF since 1.1.1).

COPYRIGHT
       Copyright 2025 The OpenSSL Project Authors. All Rights Reserved.

       Licensed  under the Apache License 2.0 (the "License").  You may not use
       this file except in compliance with the License.  You can obtain a  copy
       in    the    file   LICENSE   in   the   source   distribution   or   at
       <https://www.openssl.org/source/license.html>.

3.5.7                              2026-06-09               BIO_SET_FLAGS(3SSL)

Generated by dwww version 1.16 on Sat Oct 3 06:46:59 CEST 2026.