From: Roger Dingledine Date: Fri, 16 Mar 2007 06:55:09 +0000 (+0000) Subject: Fix an infinite loop introduced in 0.1.2.7-alpha when we serve X-Git-Tag: tor-0.2.0.1-alpha~334 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4813ff04e8d21b2545c2bbd0ca913ad0a1bd8e21;p=thirdparty%2Ftor.git 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 --- diff --git a/ChangeLog b/ChangeLog index ef846ce561..4325a66805 100644 --- a/ChangeLog +++ b/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 diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 3e7dad01c4..483c6e4c3a 100644 --- a/src/or/dirserv.c +++ b/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;