Commit 701a1936 authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

Merge branch 'maint-0.3.5' into maint-0.4.3

parents a4937384 ad7ffa52
Loading
Loading
Loading
Loading

changes/ticket33747

0 → 100644
+7 −0
Original line number Diff line number Diff line
  o Minor bugfixes (rate limiting, bridges, pluggable transports):
    - On a bridge, treat all connections from an ExtORPort as remote
      by default for the purposes of rate-limiting. Previously,
      bridges would treat the connection as local unless they explicitly
      received a "USERADDR" command.  ExtORPort connections still
      count as local if there is a USERADDR command with an  explicit local
      address. Fixes bug 33747; bugfix on 0.2.5.1-alpha.
+6 −1
Original line number Diff line number Diff line
@@ -383,8 +383,12 @@ or_connection_new(int type, int socket_family)

  connection_or_set_canonical(or_conn, 0);

  if (type == CONN_TYPE_EXT_OR)
  if (type == CONN_TYPE_EXT_OR) {
    /* If we aren't told an address for this connection, we should
     * presume it isn't local, and should be rate-limited. */
    TO_CONN(or_conn)->always_rate_limit_as_remote = 1;
    connection_or_set_ext_or_identifier(or_conn);
  }

  return or_conn;
}
@@ -3152,6 +3156,7 @@ connection_is_rate_limited(const connection_t *conn)
  if (conn->linked)
    return 0; /* Internal connection */
  else if (! options->CountPrivateBandwidth &&
           ! conn->always_rate_limit_as_remote &&
           (tor_addr_family(&conn->addr) == AF_UNSPEC || /* no address */
            tor_addr_family(&conn->addr) == AF_UNIX ||   /* no address */
            tor_addr_is_internal(&conn->addr, 0)))
+3 −0
Original line number Diff line number Diff line
@@ -69,6 +69,9 @@ struct connection_t {
  /** True if connection_handle_write is currently running on this connection.
   */
  unsigned int in_connection_handle_write:1;
  /** If true, then we treat this connection as remote for the purpose of
   * rate-limiting, no matter what its address is. */
  unsigned int always_rate_limit_as_remote:1;

  /* For linked connections:
   */
+4 −0
Original line number Diff line number Diff line
@@ -494,6 +494,10 @@ connection_ext_or_handle_cmd_useraddr(connection_t *conn,
  }
  conn->address = tor_addr_to_str_dup(&addr);

  /* Now that we know the address, we don't have to manually override rate
   * limiting. */
  conn->always_rate_limit_as_remote = 0;

  return 0;
}