浏览代码

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 年之前
父节点
当前提交
dfcd3d9ce0
共有 2 个文件被更改,包括 10 次插入0 次删除
  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);