Hi, the logic that handles write watermarks in "bio_bufferevent_write" is not working. It currently doesn't write any data if the high watermark is *above* the amount of data to write (i.e. when there is actually enough room available).
Attached is a patch that fixes this. Best regards, Joachim
diff --git a/bufferevent_openssl.c b/bufferevent_openssl.c index fcc733b..2a448cd 100644 --- a/bufferevent_openssl.c +++ b/bufferevent_openssl.c @@ -171,8 +171,8 @@ bio_bufferevent_write(BIO *b, const char *in, int inlen) /* Copy only as much data onto the output buffer as can fit under the * high-water mark. */ - if (bufev->wm_write.high && bufev->wm_write.high >= (outlen+inlen)) { - if (bufev->wm_write.high >= outlen) { + if (bufev->wm_write.high && bufev->wm_write.high <= (outlen+inlen)) { + if (bufev->wm_write.high <= outlen) { /* If no data can fit, we'll need to retry later. */ BIO_set_retry_write(b); return -1;