Browse Source

r12800@catbus: nickm | 2007-05-18 20:45:15 -0400
Possible fix for bug 417 and bug 404: do not insert our routerinfo directly; instead, re-parse it first.


svn:r10217

Nick Mathewson 18 years ago
parent
commit
58d27cfc29
2 changed files with 9 additions and 2 deletions
  1. 1 1
      src/or/or.h
  2. 8 1
      src/or/router.c

+ 1 - 1
src/or/or.h

@@ -3094,6 +3094,7 @@ routerinfo_t *router_find_exact_exit_enclave(const char *address,
                                              uint16_t port);
 
 #define ROUTER_REQUIRED_MIN_BANDWIDTH 10000
+
 #define ROUTER_MAX_DECLARED_BANDWIDTH INT32_MAX
 int router_is_unreliable(routerinfo_t *router, int need_uptime,
                          int need_capacity, int need_guard);
@@ -3131,7 +3132,6 @@ void extrainfo_free(extrainfo_t *extrainfo);
 void routerstatus_free(routerstatus_t *routerstatus);
 void networkstatus_free(networkstatus_t *networkstatus);
 void routerlist_free_all(void);
-routerinfo_t *routerinfo_copy(const routerinfo_t *router);
 void router_set_status(const char *digest, int up);
 void routerlist_remove_old_routers(void);
 void networkstatus_list_clean(time_t now);

+ 8 - 1
src/or/router.c

@@ -319,6 +319,7 @@ init_keys(void)
   mydesc = router_get_my_descriptor();
   if (authdir_mode(options)) {
     const char *m;
+    routerinfo_t *ri;
     /* We need to add our own fingerprint so it gets recognized. */
     if (dirserv_add_own_fingerprint(options->Nickname, get_identity_key())) {
       log_err(LD_GENERAL,"Error adding own fingerprint to approved set");
@@ -328,7 +329,13 @@ init_keys(void)
       log_err(LD_GENERAL,"Error initializing descriptor.");
       return -1;
     }
-    if (dirserv_add_descriptor(router_get_my_routerinfo(), &m) < 0) {
+    ri = router_parse_entry_from_string(mydesc, NULL, 1);
+    if (!ri) {
+      log_err(LD_GENERAL,"Generated a routerinfo we couldn't parse.");
+      return -1;
+    }
+    if (dirserv_add_descriptor(ri, &m)
+        < 0) {
       log_err(LD_GENERAL,"Unable to add own descriptor to directory: %s",
               m?m:"<unknown error>");
       return -1;