Pārlūkot izejas kodu

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 gadi atpakaļ
vecāks
revīzija
dfcd3d9ce0
2 mainītis faili ar 10 papildinājumiem un 0 dzēšanām
  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_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);