Browse Source

Add connection_is_moribund() inline

Andrea Shepard 7 years ago
parent
commit
1a7709d409
3 changed files with 16 additions and 6 deletions
  1. 1 2
      src/or/connection.c
  2. 14 0
      src/or/connection.h
  3. 1 4
      src/or/main.c

+ 1 - 2
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;
     }
 

+ 14 - 0
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

+ 1 - 4
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;