提交 525e2288 编写于 作者: R Richard Levitte

DOC: document in more detail what a BIO_read_ex() via BIO_f_buffer() does

The BIO_f_buffer() documentation tells in enough detail how it affects
BIO_gets(), but not how it affects BIO_read_ex().  This change
remedies that.

Fixes #10859
Reviewed-by: NTim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/10890)

(cherry picked from commit 9a4fd80ee0ad1833879b6a55c9c4673eeb8446a3)
上级 cd5acbb4
...@@ -49,10 +49,20 @@ is expanded. ...@@ -49,10 +49,20 @@ is expanded.
These functions, other than BIO_f_buffer(), are implemented as macros. These functions, other than BIO_f_buffer(), are implemented as macros.
Buffering BIOs implement BIO_gets() by using BIO_read_ex() operations on the Buffering BIOs implement BIO_read_ex() and BIO_gets() by using
next BIO in the chain. By prepending a buffering BIO to a chain it is therefore BIO_read_ex() operations on the next BIO in the chain and storing the
possible to provide BIO_gets() functionality if the following BIOs do not result in an internal buffer, from which bytes are given back to the
support it (for example SSL BIOs). caller as appropriate for the call; a BIO_gets() is guaranteed to give
the caller a whole line, and BIO_read_ex() is guaranteed to give the
caller the number of bytes it asks for, unless there's an error or end
of communication is reached in the next BIO. By prepending a
buffering BIO to a chain it is therefore possible to provide
BIO_gets() or exact size BIO_read_ex() functionality if the following
BIOs do not support it.
Do not add more than one BIO_f_buffer() to a BIO chain. The result of
doing so will force a full read of the size of the internal buffer of
the top BIO_f_buffer(), which is 4 KiB at a minimum.
Data is only written to the next BIO in the chain when the write buffer fills Data is only written to the next BIO in the chain when the write buffer fills
or when BIO_flush() is called. It is therefore important to call BIO_flush() or when BIO_flush() is called. It is therefore important to call BIO_flush()
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册