]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
When listing router status, include ourself if we are awake
authorNick Mathewson <nickm@torproject.org>
Tue, 9 Nov 2004 17:12:56 +0000 (17:12 +0000)
committerNick Mathewson <nickm@torproject.org>
Tue, 9 Nov 2004 17:12:56 +0000 (17:12 +0000)
svn:r2752

src/or/dirserv.c

index 54d1ec3f7e877a1562f1e73a6250db2e0b12d802..8e3cc5f796a2a544c00589997160ac0c367869a5 100644 (file)
@@ -498,7 +498,7 @@ list_server_status(char **running_routers_out, char **router_status_out)
 {
   /* List of entries in running-routers style: An optional !, then either
    * a nickname or a dollar-prefixed hexdigest. */
-  smartlist_t *rr_entries; 
+  smartlist_t *rr_entries;
   /* List of entries in a router-status style: An optional !, then an optional
    * equals-suffixed nickname, then a dollar-prefixed hexdigest. */
   smartlist_t *rs_entries;
@@ -511,11 +511,15 @@ list_server_status(char **running_routers_out, char **router_status_out)
   SMARTLIST_FOREACH(descriptor_list, descriptor_entry_t *, d,
   {
     int is_live;
-       connection_t *conn;
+    connection_t *conn;
     tor_assert(d->router);
     conn = connection_get_by_identity_digest(
                     d->router->identity_digest, CONN_TYPE_OR);
-    is_live = (conn && conn->state == OR_CONN_STATE_OPEN);
+    /* Treat a router as alive if
+     *    - It's me, and I'm not hibernating.
+     * or - we're connected to it. */
+    is_live = (router_is_me(d->router) && !we_are_hibernating()) ||
+      (conn && conn->state == OR_CONN_STATE_OPEN);
     smartlist_add(rr_entries, list_single_server_status(d, is_live, 1));
     smartlist_add(rs_entries, list_single_server_status(d, is_live, 0));
   });