[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[Libevent-users] Write watermarks in ssl bufferevents not working?



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;