[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] r15332: When establishing a hidden service, introduction points that (in tor/trunk: . src/or)
Author: kloesing
Date: 2008-06-17 13:10:03 -0400 (Tue, 17 Jun 2008)
New Revision: 15332
Modified:
tor/trunk/ChangeLog
tor/trunk/src/or/rendservice.c
Log:
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.
Modified: tor/trunk/ChangeLog
===================================================================
--- tor/trunk/ChangeLog 2008-06-17 15:25:34 UTC (rev 15331)
+++ tor/trunk/ChangeLog 2008-06-17 17:10:03 UTC (rev 15332)
@@ -22,6 +22,10 @@
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 @@
- 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.
Modified: tor/trunk/src/or/rendservice.c
===================================================================
--- tor/trunk/src/or/rendservice.c 2008-06-17 15:25:34 UTC (rev 15331)
+++ tor/trunk/src/or/rendservice.c 2008-06-17 17:10:03 UTC (rev 15332)
@@ -797,6 +797,22 @@
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);