Commit 7edae589 authored by Nick Mathewson's avatar Nick Mathewson 🦀
Browse files

Merge commit 'karsten/fix-bridge-stats-master-4'

parents f711bc82 3a5a728d
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -25,6 +25,9 @@ Changes in version 0.2.2.7-alpha - 2009-??-??
    - Do not segfault when writing buffer stats when we haven't observed
      a single circuit to report about. Found by Fabian Lanze. Bugfix on
      0.2.2.1-alpha.
    - Fix statistics on client numbers by country as seen by bridges that
      were broken in 0.2.2.1-alpha. Also switch to reporting full 24-hour
      intervals instead of variable 12-to-48-hour intervals.

  o Removed features:
    - Remove the HSAuthorityRecordStats option that version 0 hidden
+5 −5
Original line number Diff line number Diff line
@@ -1637,11 +1637,11 @@
  TimeStarted is a quoted string indicating when the reported summary
  counts from (in GMT).

  The CountrySummary keyword has as its argument a comma-separated
  set of "countrycode=count" pairs. For example,
  650-CLIENTS_SEEN TimeStarted="Thu Dec 25 23:50:43 EST 2008"
  650 CountrySummary=us=16,de=8,uk=8
[XXX Matt Edman informs me that the time format above is wrong. -RD]
  The CountrySummary keyword has as its argument a comma-separated,
  possibly empty set of "countrycode=count" pairs. For example (without
  linebreak),
  650-CLIENTS_SEEN TimeStarted="2008-12-25 23:50:43"
  CountrySummary=us=16,de=8,uk=8

4.1.15. New consensus networkstatus has arrived.

+29 −2
Original line number Diff line number Diff line
@@ -627,8 +627,8 @@

        As documented in 2.1 above.  See migration notes in section 2.2.1.

    "geoip-start" YYYY-MM-DD HH:MM:SS NL
    "geoip-client-origins" CC=N,CC=N,... NL
    ("geoip-start" YYYY-MM-DD HH:MM:SS NL)
    ("geoip-client-origins" CC=N,CC=N,... NL)

        Only generated by bridge routers (see blocking.pdf), and only
        when they have been configured with a geoip database.
@@ -641,6 +641,33 @@
        "geoip-start" is the time at which we began collecting geoip
        statistics.

        "geoip-start" and "geoip-client-origins" have been replaced by
        "bridge-stats-end" and "bridge-stats-ips" in 0.2.2.4-alpha. The
        reason is that the measurement interval with "geoip-stats" as
        determined by subtracting "geoip-start" from "published" could
        have had a variable length, whereas the measurement interval in
        0.2.2.4-alpha and later is set to be exactly 24 hours long. In
        order to clearly distinguish the new measurement intervals from
        the old ones, the new keywords have been introduced.

    "bridge-stats-end" YYYY-MM-DD HH:MM:SS (NSEC s) NL
        [At most once.]

        YYYY-MM-DD HH:MM:SS defines the end of the included measurement
        interval of length NSEC seconds (86400 seconds by default).

        A "bridge-stats-end" line, as well as any other "bridge-*" line,
        is only added when the relay has been running as a bridge for at
        least 24 hours.

    "bridge-ips" CC=N,CC=N,... NL
        [At most once.]

        List of mappings from two-letter country codes to the number of
        unique IP addresses that have connected from that country to the
        bridge and which are no known relays, rounded up to the nearest
        multiple of 8.

    "dirreq-stats-end" YYYY-MM-DD HH:MM:SS (NSEC s) NL
        [At most once.]

+1 −1
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@
/** A number representing a version of Libevent.

    This is a 4-byte number, with the first three bytes representing the
    major, minor, and patchlevel respectively of the the library.  The fourth
    major, minor, and patchlevel respectively of the library.  The fourth
    byte is unused.

    This is equivalent to the format of LIBEVENT_VERSION_NUMBER on Libevent
+25 −2
Original line number Diff line number Diff line
@@ -682,6 +682,29 @@ find_whitespace_eos(const char *s, const char *eos)
  return s;
}

/** Return the first occurrence of <b>needle</b> in <b>haystack</b> that
 * occurs at the start of a line (that is, at the beginning of <b>haystack</b>
 * or immediately after a newline).  Return NULL if no such string is found.
 */
const char *
find_str_at_start_of_line(const char *haystack, const char *needle)
{
  size_t needle_len = strlen(needle);

  do {
    if (!strncmp(haystack, needle, needle_len))
      return haystack;

    haystack = strchr(haystack, '\n');
    if (!haystack)
      return NULL;
    else
      ++haystack;
  } while (*haystack);

  return NULL;
}

/** Return true iff the 'len' bytes at 'mem' are all zero. */
int
tor_mem_is_zero(const char *mem, size_t len)
@@ -1214,7 +1237,7 @@ format_rfc1123_time(char *buf, time_t t)
  memcpy(buf+8, MONTH_NAMES[tm.tm_mon], 3);
}

/** Parse the the RFC1123 encoding of some time (in GMT) from <b>buf</b>,
/** Parse the RFC1123 encoding of some time (in GMT) from <b>buf</b>,
 * and store the result in *<b>t</b>.
 *
 * Return 0 on success, -1 on failure.
@@ -1755,7 +1778,7 @@ write_str_to_file(const char *fname, const char *str, int bin)
}

/** Represents a file that we're writing to, with support for atomic commit:
 * we can write into a a temporary file, and either remove the file on
 * we can write into a temporary file, and either remove the file on
 * failure, or replace the original file on success. */
struct open_file_t {
  char *tempname; /**< Name of the temporary file. */
Loading