Browse Source

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.
Nick Mathewson 14 years ago
parent
commit
dfcd3d9ce0
2 changed files with 10 additions and 0 deletions
  1. 5 0
      changes/bug3805
  2. 5 0
      src/or/connection.c

+ 5 - 0
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.
+

+ 5 - 0
src/or/connection.c

@@ -2947,6 +2947,11 @@ connection_configure_bufferevent_callbacks(connection_t *conn)
                     connection_handle_write_cb,
                     connection_handle_write_cb,
                     connection_handle_event_cb,
                     connection_handle_event_cb,
                     conn);
                     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);
   input = bufferevent_get_input(bufev);
   output = bufferevent_get_output(bufev);
   output = bufferevent_get_output(bufev);