diff options
author | Nick Mathewson <nickm@torproject.org> | 2007-01-27 08:55:06 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2007-01-27 08:55:06 +0000 |
commit | 9984cad6e86d65f4685fd1283bf1f1b4a4602f22 (patch) | |
tree | ce97ea208a1650414535881a16c5dce4dab40f87 /src/or/connection_edge.c | |
parent | 2525c44d176feb5227910ccc63e39622774086dc (diff) | |
download | tor-9984cad6e86d65f4685fd1283bf1f1b4a4602f22.tar.gz tor-9984cad6e86d65f4685fd1283bf1f1b4a4602f22.zip |
r11552@catbus: nickm | 2007-01-27 03:55:02 -0500
This one is a little tricky. Our BEGIN_DIR implementation has a
problem: the dirserv conns will decide they can flush all their data
immediately, since the edge_conns will read greedily.
For our 0.1.2 workaround, we track which or_conn a bridged dirserv
conn is attached to, and stop writing when its outbuf is too full, and
start writing again when the or_conn's outbuf empties out a little.
This requires a bit of pointer management. Let's hope it works.
svn:r9432
Diffstat (limited to 'src/or/connection_edge.c')
-rw-r--r-- | src/or/connection_edge.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 22ef529c36..7b2f95eea3 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -2461,6 +2461,9 @@ connection_exit_connect_dir(edge_connection_t *exit_conn) return 0; } + dir_conn->bridge_conn = exit_conn; + exit_conn->bridge_for_conn = dir_conn; + connection_start_reading(TO_CONN(dir_conn)); connection_start_reading(TO_CONN(exit_conn)); |