aboutsummaryrefslogtreecommitdiff
path: root/src/or/connection.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/or/connection.c')
-rw-r--r--src/or/connection.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/src/or/connection.c b/src/or/connection.c
index 9ef723e91..660678fe6 100644
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@ -1582,7 +1582,7 @@ connection_get_by_type_addr_port_purpose(int type, uint32_t addr, uint16_t port,
connection_t *
connection_get_by_identity_digest(const char *digest)
{
- int i, n, newer, best_has_circ=0, conn_has_circ;
+ int i, n, newer;
connection_t *conn, *best=NULL;
connection_t **carray;
@@ -1595,7 +1595,6 @@ connection_get_by_identity_digest(const char *digest)
continue;
if (!best) {
best = conn; /* whatever it is, it's better than nothing. */
- best_has_circ = (circuit_get_by_conn(best) != NULL);
continue;
}
if (best->state == OR_CONN_STATE_OPEN &&
@@ -1604,13 +1603,10 @@ connection_get_by_identity_digest(const char *digest)
newer = best->timestamp_created < conn->timestamp_created;
if (conn->is_obsolete && (!best->is_obsolete || !newer))
continue; /* we have something, and it's better than this. */
- conn_has_circ = (circuit_get_by_conn(conn) != NULL);
- if (best_has_circ && !conn_has_circ)
+ if (best->n_circuits && !conn->n_circuits)
continue; /* prefer conns with circuits on them */
- if (newer) {
+ if (newer)
best = conn; /* lastly, prefer newer conns */
- best_has_circ = conn_has_circ;
- }
}
return best;
}