summaryrefslogtreecommitdiff
path: root/src/or/connection.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2009-08-08 17:47:47 -0700
committerNick Mathewson <nickm@torproject.org>2010-09-27 12:29:43 -0400
commitd830eb366ab037c820b138cfbb8f4bd66986bf42 (patch)
tree07215f942b87e7dcf460f891b624c350982989cc /src/or/connection.c
parentec10c044fb3e7b4865a7e9082c5353876e40915f (diff)
downloadtor-d830eb366ab037c820b138cfbb8f4bd66986bf42.tar.gz
tor-d830eb366ab037c820b138cfbb8f4bd66986bf42.zip
Allow hold-open-until-flushed logic to work for bufferevents.
Diffstat (limited to 'src/or/connection.c')
-rw-r--r--src/or/connection.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/or/connection.c b/src/or/connection.c
index ff5c4c04ae..6665809bc2 100644
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@ -2661,14 +2661,17 @@ static void
connection_handle_write_cb(struct bufferevent *bufev, void *arg)
{
connection_t *conn = arg;
- (void) bufev;
+ struct evbuffer *output;
if (connection_flushed_some(conn)<0) {
connection_mark_for_close(conn);
return;
}
- if (!connection_wants_to_flush(conn)) {
+ output = bufferevent_get_output(bufev);
+ if (!evbuffer_get_length(output)) {
connection_finished_flushing(conn);
+ if (conn->marked_for_close && conn->hold_open_until_flushed)
+ conn->hold_open_until_flushed = 0;
}
}