Browse Source

Fix an infinite loop introduced in 0.1.2.7-alpha when we serve
directory information requested inside Tor connections (i.e. via
begin_dir cells). It only triggered when the same connection was
serving other data at the same time. Reported by seeess.

Backport candidate.


svn:r9841

Roger Dingledine 18 years ago
parent
commit
4813ff04e8
2 changed files with 8 additions and 2 deletions
  1. 6 0
      ChangeLog
  2. 2 2
      src/or/dirserv.c

+ 6 - 0
ChangeLog

@@ -5,6 +5,12 @@ Changes in version 0.2.0.1-alpha - 2007-??-??
       in the network. Implements proposal 1xx, suggested by Kevin Bauer
       and Damon McCoy.
 
+  o Major bugfixes:
+    - Fix an infinite loop introduced in 0.1.2.7-alpha when we serve
+      directory information requested inside Tor connections (i.e. via
+      begin_dir cells). It only triggered when the same connection was
+      serving other data at the same time. Reported by seeess.
+
   o Minor features (build):
     - Make autoconf search for libevent and openssl consistently.
     - Update deprecated macros in configure.in

+ 2 - 2
src/or/dirserv.c

@@ -2093,8 +2093,8 @@ connection_dirserv_stop_blocking_all_on_or_conn(or_connection_t *or_conn)
 {
   dir_connection_t *dir_conn, *next;
 
-  while (or_conn->blocked_dir_connections) {
-    dir_conn = or_conn->blocked_dir_connections;
+  dir_conn=or_conn->blocked_dir_connections;
+  while (dir_conn) {
     next = dir_conn->next_blocked_on_same_or_conn;
 
     dir_conn->is_blocked_on_or_conn = 0;