Ver código fonte

Add a function to get a LongName from a routerstatus. Needed for partial bug 941 fix.

svn:r19077
Nick Mathewson 16 anos atrás
pai
commit
e591aafca4
2 arquivos alterados com 20 adições e 2 exclusões
  1. 2 1
      src/or/or.h
  2. 18 1
      src/or/router.c

+ 2 - 1
src/or/or.h

@@ -4238,7 +4238,8 @@ char *extrainfo_get_client_geoip_summary(time_t);
 int is_legal_nickname(const char *s);
 int is_legal_nickname_or_hexdigest(const char *s);
 int is_legal_hexdigest(const char *s);
-void router_get_verbose_nickname(char *buf, routerinfo_t *router);
+void router_get_verbose_nickname(char *buf, const routerinfo_t *router);
+void routerstatus_get_verbose_nickname(char *buf, const routerstatus_t *router);
 void router_reset_warnings(void);
 void router_reset_reachability(void);
 void router_free_all(void);

+ 18 - 1
src/or/router.c

@@ -1980,7 +1980,7 @@ is_legal_hexdigest(const char *s)
  *  The router's nickname.
  **/
 void
-router_get_verbose_nickname(char *buf, routerinfo_t *router)
+router_get_verbose_nickname(char *buf, const routerinfo_t *router)
 {
   buf[0] = '$';
   base16_encode(buf+1, HEX_DIGEST_LEN+1, router->cache_info.identity_digest,
@@ -1989,6 +1989,23 @@ router_get_verbose_nickname(char *buf, routerinfo_t *router)
   strlcpy(buf+1+HEX_DIGEST_LEN+1, router->nickname, MAX_NICKNAME_LEN+1);
 }
 
+/** Set <b>buf</b> (which must have MAX_VERBOSE_NICKNAME_LEN+1 bytes) to the
+ * verbose representation of the identity of <b>router</b>.  The format is:
+ *  A dollar sign.
+ *  The upper-case hexadecimal encoding of the SHA1 hash of router's identity.
+ *  A "=" if the router is named; a "~" if it is not.
+ *  The router's nickname.
+ **/
+void
+routerstatus_get_verbose_nickname(char *buf, const routerstatus_t *router)
+{
+  buf[0] = '$';
+  base16_encode(buf+1, HEX_DIGEST_LEN+1, router->identity_digest,
+                DIGEST_LEN);
+  buf[1+HEX_DIGEST_LEN] = router->is_named ? '=' : '~';
+  strlcpy(buf+1+HEX_DIGEST_LEN+1, router->nickname, MAX_NICKNAME_LEN+1);
+}
+
 /** Forget that we have issued any router-related warnings, so that we'll
  * warn again if we see the same errors. */
 void