瀏覽代碼

Do not publish the "git-XXX" tag in server descriptors

Instead, allow packagers to put a 'TOR_BUILD_TAG' field in the
server descriptor to indicate a platform-specific value, if they
need to.  (According to weasel, this was his use for the git- tag
previously.)

This is part of 2988
Nick Mathewson 13 年之前
父節點
當前提交
31eb73f88e
共有 4 個文件被更改,包括 27 次插入4 次删除
  1. 5 1
      changes/bug2988
  2. 20 2
      src/or/config.c
  3. 1 0
      src/or/config.h
  4. 1 1
      src/or/router.c

+ 5 - 1
changes/bug2988

@@ -3,4 +3,8 @@
       operating system's name (e.g., "Linux", "Darwin", "Windows 7"),
       operating system's name (e.g., "Linux", "Darwin", "Windows 7"),
       and not its service pack level (for Windows), or its CPU
       and not its service pack level (for Windows), or its CPU
       architecture (for Unix). This is part of ticket 2988.
       architecture (for Unix). This is part of ticket 2988.
-
+    - Do not include the (git-XYZ) tag in published server descriptor
+      platform lines. This is part of ticket 2988.
+    - Allow packagers to insert an extra string in server descriptor
+      platform lines by setting the preprocessor variable TOR_BUILD_TAG.
+      This is part of ticket 2988.

+ 20 - 2
src/or/config.c

@@ -783,6 +783,7 @@ extern const char tor_git_revision[]; /* from tor_main.c */
 
 
 /** The version of this Tor process, as parsed. */
 /** The version of this Tor process, as parsed. */
 static char *the_tor_version = NULL;
 static char *the_tor_version = NULL;
+static char *the_short_tor_version = NULL;
 
 
 /** Return the current Tor version. */
 /** Return the current Tor version. */
 const char *
 const char *
@@ -790,14 +791,31 @@ get_version(void)
 {
 {
   if (the_tor_version == NULL) {
   if (the_tor_version == NULL) {
     if (strlen(tor_git_revision)) {
     if (strlen(tor_git_revision)) {
-      tor_asprintf(&the_tor_version, "%s (git-%s)", VERSION, tor_git_revision);
+      tor_asprintf(&the_tor_version, "%s (git-%s)", get_short_version(),
+                   tor_git_revision);
     } else {
     } else {
-      the_tor_version = tor_strdup(VERSION);
+      the_tor_version = tor_strdup(get_short_version());
     }
     }
   }
   }
   return the_tor_version;
   return the_tor_version;
 }
 }
 
 
+/** Return the current Tor version, without any git tag. */
+const char *
+get_short_version(void)
+{
+
+  if (the_short_tor_version == NULL) {
+#ifdef TOR_BUILD_TAG
+    tor_asprintf(&the_short_tor_version, "%s (%s)", VERSION, TOR_BUILD_TAG);
+#else
+    the_short_tor_version = tor_strdup(VERSION);
+#endif
+  }
+  return the_short_tor_version;
+}
+
+
 /** Release additional memory allocated in options
 /** Release additional memory allocated in options
  */
  */
 static void
 static void

+ 1 - 0
src/or/config.h

@@ -22,6 +22,7 @@ const char *safe_str(const char *address);
 const char *escaped_safe_str_client(const char *address);
 const char *escaped_safe_str_client(const char *address);
 const char *escaped_safe_str(const char *address);
 const char *escaped_safe_str(const char *address);
 const char *get_version(void);
 const char *get_version(void);
+const char *get_short_version(void);
 
 
 int config_get_lines(const char *string, config_line_t **result, int extended);
 int config_get_lines(const char *string, config_line_t **result, int extended);
 void config_free_lines(config_line_t *front);
 void config_free_lines(config_line_t *front);

+ 1 - 1
src/or/router.c

@@ -1949,7 +1949,7 @@ router_guess_address_from_dir_headers(uint32_t *guess)
 void
 void
 get_platform_str(char *platform, size_t len)
 get_platform_str(char *platform, size_t len)
 {
 {
-  tor_snprintf(platform, len, "Tor %s on %s", get_version(), get_uname());
+  tor_snprintf(platform, len, "Tor %s on %s", get_short_version(), get_uname());
 }
 }
 
 
 /* XXX need to audit this thing and count fenceposts. maybe
 /* XXX need to audit this thing and count fenceposts. maybe