mirror of
https://github.com/libevent/libevent.git
synced 2025-01-31 09:12:55 +08:00
Merge remote-tracking branch 'origin/patches-2.0'
This commit is contained in:
commit
c00416f745
@ -784,6 +784,23 @@ consider_reading(struct bufferevent_openssl *bev_ssl)
|
||||
* already been done, since OpenSSL went and read a
|
||||
* whole SSL record anyway. */
|
||||
n_to_read = SSL_pending(bev_ssl->ssl);
|
||||
|
||||
/* XXX This if statement is actually a bad bug, added to avoid
|
||||
* XXX a worse bug.
|
||||
*
|
||||
* The bad bug: It can potentially cause resource unfairness
|
||||
* by reading too much data from the underlying bufferevent;
|
||||
* it can potentially cause read looping if the underlying
|
||||
* bufferevent is a bufferevent_pair and deferred callbacks
|
||||
* aren't used.
|
||||
*
|
||||
* The worse bug: If we didn't do this, then we would
|
||||
* potentially not read any more from bev_ssl->underlying
|
||||
* until more data arrived there, which could lead to us
|
||||
* waiting forever.
|
||||
*/
|
||||
if (!n_to_read && bev_ssl->underlying)
|
||||
n_to_read = bytes_to_read(bev_ssl);
|
||||
}
|
||||
|
||||
if (!bev_ssl->underlying) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user