Commit 693d7e3e authored by Karsten Loesing's avatar Karsten Loesing
Browse files

When establishing a hidden service, introduction points that originate from...

When establishing a hidden service, introduction points that originate from cannibalized circuits are completely ignored and not included in rendezvous service descriptors. Bugfix on 0.2.0.14-alpha. Backport candidate.

svn:r15332
parent 1ad83d74
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -22,6 +22,10 @@ Changes in version 0.2.1.2-alpha - 2008-??-??
      would crash a dirserver if it did not already have a consensus.
    - Clean up some macro/CPP interactions: some GCC versions don't like
      #if/#endif pairs inside macro arguments.  Fixes bug 707.
    - When establishing a hidden service, introduction points that originate
      from cannibalized circuits are completely ignored and not included in
      rendezvous service descriptors. This might be another reason for delay
      in making a hidden service available. Bugfix on 0.2.0.14-alpha.


Changes in version 0.2.1.1-alpha - 2008-06-13
@@ -127,7 +131,7 @@ Changes in version 0.2.0.28-rc - 2008-06-13
    - While setting up a hidden service, some valid introduction circuits
      were overlooked and abandoned. This might be the reason for
      the long delay in making a hidden service available. Bugfix on
      0.2.0.13-alpha.
      0.2.0.14-alpha.

  o Minor features:
    - Update to the "June 9 2008" ip-to-country file.
+16 −0
Original line number Diff line number Diff line
@@ -797,6 +797,22 @@ rend_service_launch_establish_intro(rend_service_t *service,
             escaped_safe_str(intro->extend_info->nickname));
    return -1;
  }

  if (memcmp(intro->extend_info->identity_digest,
      launched->build_state->chosen_exit->identity_digest, DIGEST_LEN)) {
    char cann[HEX_DIGEST_LEN+1], orig[HEX_DIGEST_LEN+1];
    base16_encode(cann, sizeof(cann),
                  launched->build_state->chosen_exit->identity_digest,
                  DIGEST_LEN);
    base16_encode(orig, sizeof(orig),
                  intro->extend_info->identity_digest, DIGEST_LEN);
    log_info(LD_REND, "The intro circuit we just cannibalized ends at $%s, "
                      "but we requested an intro circuit to $%s. Updating "
                      "our service.", cann, orig);
    tor_free(intro->extend_info);
    intro->extend_info = extend_info_dup(launched->build_state->chosen_exit);
  }

  strlcpy(launched->rend_query, service->service_id,
          sizeof(launched->rend_query));
  memcpy(launched->rend_pk_digest, service->pk_digest, DIGEST_LEN);