Unverified Commit 57acdaa3 authored by teor's avatar teor
Browse files

Merge branch 'maint-0.3.5' into maint-0.4.0

parents 641f1304 d175e708
Loading
Loading
Loading
Loading

changes/bug12399

0 → 100644
+3 −0
Original line number Diff line number Diff line
  o Minor bugfixes (logging):
    - Change log level of message "Hash of session info was not as expected"
      to LOG_PROTOCOL_WARN. Fixes bug 12399; bugfix on 0.1.1.10-alpha.

changes/bug23507

0 → 100644
+5 −0
Original line number Diff line number Diff line
  o Minor bugfixes (v3 single onion services):
    - Make v3 single onion services fall back to a 3-hop intro, when there
      all intro points are unreachable via a 1-hop path. Previously, v3
      single onion services failed when all intro nodes were unreachable
      via a 1-hop path. Fixes bug 23507; bugfix on 0.3.2.1-alpha.

changes/bug23818_v2

0 → 100644
+6 −0
Original line number Diff line number Diff line
  o Minor bugfixes (v2 single onion services):
    - Always retry v2 single onion service intro and rend circuits with a
      3-hop path. Previously, v2 single onion services used a 3-hop path
      when rend circuits were retried after a remote or delayed failure,
      but a 1-hop path for immediate retries. Fixes bug 23818;
      bugfix on 0.2.9.3-alpha.

changes/bug23818_v3

0 → 100644
+6 −0
Original line number Diff line number Diff line
  o Minor bugfixes (v3 single onion services):
    - Always retry v3 single onion service intro and rend circuits with a
      3-hop path. Previously, v3 single onion services used a 3-hop path
      when rend circuits were retried after a remote or delayed failure,
      but a 1-hop path for immediate retries. Fixes bug 23818;
      bugfix on 0.3.2.1-alpha.
+22 −6
Original line number Diff line number Diff line
@@ -405,8 +405,12 @@ launch_rendezvous_point_circuit(const hs_service_t *service,
    if (circ_needs_uptime) {
      circ_flags |= CIRCLAUNCH_NEED_UPTIME;
    }
    /* Firewall and policies are checked when getting the extend info. */
    if (service->config.is_single_onion) {
    /* Firewall and policies are checked when getting the extend info.
     *
     * We only use a one-hop path on the first attempt. If the first attempt
     * fails, we use a 3-hop path for reachability / reliability.
     * See the comment in retry_service_rendezvous_point() for details. */
    if (service->config.is_single_onion && i == 0) {
      circ_flags |= CIRCLAUNCH_ONEHOP_TUNNEL;
    }

@@ -754,13 +758,16 @@ hs_circ_retry_service_rendezvous_point(origin_circuit_t *circ)
}

/* For a given service and a service intro point, launch a circuit to the
 * extend info ei. If the service is a single onion, a one-hop circuit will be
 * requested. Return 0 if the circuit was successfully launched and tagged
 * extend info ei. If the service is a single onion, and direct_conn is true,
 * a one-hop circuit will be requested.
 *
 * Return 0 if the circuit was successfully launched and tagged
 * with the correct identifier. On error, a negative value is returned. */
int
hs_circ_launch_intro_point(hs_service_t *service,
                           const hs_service_intro_point_t *ip,
                           extend_info_t *ei)
                           extend_info_t *ei,
                           bool direct_conn)
{
  /* Standard flags for introduction circuit. */
  int ret = -1, circ_flags = CIRCLAUNCH_NEED_UPTIME | CIRCLAUNCH_IS_INTERNAL;
@@ -772,7 +779,16 @@ hs_circ_launch_intro_point(hs_service_t *service,

  /* Update circuit flags in case of a single onion service that requires a
   * direct connection. */
  if (service->config.is_single_onion) {
  tor_assert_nonfatal(ip->circuit_retries > 0);
  /* Only single onion services can make direct conns */
  if (BUG(!service->config.is_single_onion && direct_conn)) {
    goto end;
  }
  /* We only use a one-hop path on the first attempt. If the first attempt
   * fails, we use a 3-hop path for reachability / reliability.
   * (Unlike v2, retries is incremented by the caller before it calls this
   * function.) */
  if (direct_conn && ip->circuit_retries == 1) {
    circ_flags |= CIRCLAUNCH_ONEHOP_TUNNEL;
  }

Loading