From 1a7709d40949b559a6f86e2bbcd1648eeeeed1af Mon Sep 17 00:00:00 2001 From: Andrea Shepard Date: Sat, 20 Aug 2016 03:34:16 +0000 Subject: [PATCH] Add connection_is_moribund() inline --- src/or/connection.c | 3 +-- src/or/connection.h | 14 ++++++++++++++ src/or/main.c | 5 +---- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/or/connection.c b/src/or/connection.c index f38dc59a01..713a70cca4 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -4588,8 +4588,7 @@ pick_oos_victims, (int n)) ++(conn_counts_by_type[c->type]); /* Skip anything we would count as moribund */ - if (c->conn_array_index < 0 || - c->marked_for_close) { + if (connection_is_moribund(c)) { continue; } diff --git a/src/or/connection.h b/src/or/connection.h index 9bf063fbff..d25e002fa4 100644 --- a/src/or/connection.h +++ b/src/or/connection.h @@ -247,6 +247,20 @@ void clock_skew_warning(const connection_t *conn, long apparent_skew, int trusted, log_domain_mask_t domain, const char *received, const char *source); +/** Check if a connection is on the way out so the OOS handler doesn't try + * to kill more than it needs. */ +static inline int +connection_is_moribund(connection_t *conn) +{ + if (conn != NULL && + (conn->conn_array_index < 0 || + conn->marked_for_close)) { + return 1; + } else { + return 0; + } +} + void connection_check_oos(int n_socks, int failed); #ifdef CONNECTION_PRIVATE diff --git a/src/or/main.c b/src/or/main.c index 9741f15022..6ab94f5e36 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -662,10 +662,7 @@ connection_count_moribund, (void)) * runs next. */ SMARTLIST_FOREACH_BEGIN(closeable_connection_lst, connection_t *, conn) { - if (conn->conn_array_index < 0 || - conn->marked_for_close) { - ++moribund; - } + if (connection_is_moribund(conn)) ++moribund; } SMARTLIST_FOREACH_END(conn); return moribund;