From dfcd3d9ce00dedcf00124c9329985c5522f286dc Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Wed, 24 Aug 2011 17:30:20 -0400 Subject: [PATCH] Set write low-watermarks on all bufferevents. If we don't do this, then we never invoke the bufferevent write callbacks until all the bufferevent's data is flushed. --- changes/bug3805 | 5 +++++ src/or/connection.c | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 changes/bug3805 diff --git a/changes/bug3805 b/changes/bug3805 new file mode 100644 index 0000000000..9d12b8146e --- /dev/null +++ b/changes/bug3805 @@ -0,0 +1,5 @@ + o Major bugfixes (bufferevents): + - Correctly notice when data has been written from a bufferevent + without flushing it completely. Bugfix on 0.2.3.1-alpha; fixes + bug 3805. + diff --git a/src/or/connection.c b/src/or/connection.c index c4cbef4c9d..dc804ddcec 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -2947,6 +2947,11 @@ connection_configure_bufferevent_callbacks(connection_t *conn) connection_handle_write_cb, connection_handle_event_cb, conn); + /* Set a fairly high write low-watermark so that we get the write callback + called whenever data is written to bring us under 128K. Leave the + high-watermark at 0. + */ + bufferevent_setwatermark(bufev, EV_WRITE, 128*1024, 0); input = bufferevent_get_input(bufev); output = bufferevent_get_output(bufev);