diff options
author | Nick Mathewson <nickm@torproject.org> | 2015-03-14 14:24:18 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2015-03-14 14:28:29 -0400 |
commit | b78803f9f543c83bf50d0751eb160e80ed602eae (patch) | |
tree | 17b11ce4c4c1cb7c5d34003c3e97f2539748bf1f /src/or/main.c | |
parent | eb68ea20f833b4ced42fdfa008c6ec3d0a07c847 (diff) | |
download | tor-b78803f9f543c83bf50d0751eb160e80ed602eae.tar.gz tor-b78803f9f543c83bf50d0751eb160e80ed602eae.zip |
Extract main part of main loop into a separate function
For 15176; Shadow would like this.
Based on a patch by Rob Jansen, but revised to have a minimal-sized diff.
Diffstat (limited to 'src/or/main.c')
-rw-r--r-- | src/or/main.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/or/main.c b/src/or/main.c index bc89458e87..f5bca4e51b 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -97,6 +97,7 @@ static void second_elapsed_callback(periodic_timer_t *timer, void *args); static int conn_close_if_marked(int i); static void connection_start_reading_from_linked_conn(connection_t *conn); static int connection_should_read_from_linked_conn(connection_t *conn); +static int run_main_loop_until_done(void); /********* START VARIABLES **********/ @@ -1955,7 +1956,6 @@ do_hup(void) int do_main_loop(void) { - int loop_result; time_t now; /* initialize dns resolve map, spawn workers if needed */ @@ -2084,7 +2084,14 @@ do_main_loop(void) } #endif - for (;;) { + return run_main_loop_until_done(); +} + +static int +run_main_loop_once(void) +{ + int loop_result; + if (1) { if (nt_service_is_stopping()) return 0; @@ -2125,10 +2132,20 @@ do_main_loop(void) log_debug(LD_NET,"libevent call interrupted."); /* You can't trust the results of this poll(). Go back to the * top of the big for loop. */ - continue; + return 1; } } } + return 1; +} + +static int +run_main_loop_until_done(void) +{ + int loop_result = 1; + while ((loop_result = run_main_loop_once()) == 1) + continue; + return loop_result; } #ifndef _WIN32 /* Only called when we're willing to use signals */ |