Преглед изворни кода

Add `published` line to `@type bridge-network-status` documents.

This modifies the format of the bridge networkstatus documents produced
by the BridgeAuth. The new format adds a `published` line to the header
of the file, before the `flag-thresholds` line. This is done once per
networkstatus file that is written. The timestamp in the `published`
line is the standard ISO 8601 format (with a space as the separator)
used throughout the rest of tor.

 * FIXES #12951 https://bugs.torproject.org/12951
Isis Lovecruft пре 9 година
родитељ
комит
374b531dba
1 измењених фајлова са 10 додато и 5 уклоњено
  1. 10 5
      src/or/networkstatus.c

+ 10 - 5
src/or/networkstatus.c

@@ -1672,17 +1672,22 @@ networkstatus_dump_bridge_status_to_file(time_t now)
   char *status = networkstatus_getinfo_by_purpose("bridge", now);
   const or_options_t *options = get_options();
   char *fname = NULL;
-  char *thresholds = NULL, *thresholds_and_status = NULL;
+  char *thresholds = NULL;
+  char *published_thresholds_and_status = NULL;
   routerlist_t *rl = router_get_routerlist();
+  char published[ISO_TIME_LEN+1];
+
+  format_iso_time(published, now);
   dirserv_compute_bridge_flag_thresholds(rl);
   thresholds = dirserv_get_flag_thresholds_line();
-  tor_asprintf(&thresholds_and_status, "flag-thresholds %s\n%s",
-               thresholds, status);
+  tor_asprintf(&published_thresholds_and_status,
+               "published %s\nflag-thresholds %s\n%s",
+               published, thresholds, status);
   tor_asprintf(&fname, "%s"PATH_SEPARATOR"networkstatus-bridges",
                options->DataDirectory);
-  write_str_to_file(fname,thresholds_and_status,0);
+  write_str_to_file(fname,published_thresholds_and_status,0);
   tor_free(thresholds);
-  tor_free(thresholds_and_status);
+  tor_free(published_thresholds_and_status);
   tor_free(fname);
   tor_free(status);
 }