summaryrefslogtreecommitdiff
path: root/src/or/connection_edge.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2007-01-27 08:55:06 +0000
committerNick Mathewson <nickm@torproject.org>2007-01-27 08:55:06 +0000
commit9984cad6e86d65f4685fd1283bf1f1b4a4602f22 (patch)
treece97ea208a1650414535881a16c5dce4dab40f87 /src/or/connection_edge.c
parent2525c44d176feb5227910ccc63e39622774086dc (diff)
downloadtor-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.c3
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));