summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarsten Loesing <karsten.loesing@gmx.net>2008-06-11 23:44:13 +0000
committerKarsten Loesing <karsten.loesing@gmx.net>2008-06-11 23:44:13 +0000
commitb3aaa47d3ed1ba8c2eb8edb4de18566ff1f9b19c (patch)
tree79baf8f8e1e0622ce0d91befc9bbe5ad7af4abe5
parent1fde6994d5f6f24975dc7d6b4d3e4c2ce7a25631 (diff)
downloadtor-b3aaa47d3ed1ba8c2eb8edb4de18566ff1f9b19c.tar.gz
tor-b3aaa47d3ed1ba8c2eb8edb4de18566ff1f9b19c.zip
Backport of r15149: you can't strcasecmp on 20-byte digests
what if they contain nuls? (worse, what if they *don't* contain nuls? ;) svn:r15152
-rw-r--r--ChangeLog3
-rw-r--r--src/or/rendservice.c8
2 files changed, 7 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index d4a3b342ac..6762e7ffe5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -21,6 +21,9 @@ Changes in version 0.2.0.28-rc - 2008-06-??
bug 688, reported by mfr.
- Fix unit tests in 0.2.0.27-rc.
- Fix compile on Windows.
+ - While setting up a hidden service, some valid introduction circuits
+ were overlooked and given up. This might be the reason for the long
+ delay in making a hidden service available. Bugfix on 0.2.0.13-alpha.
Changes in version 0.2.0.27-rc - 2008-06-03
diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index 21163cf0c2..01b73adceb 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -1026,8 +1026,8 @@ find_intro_circuit(rend_intro_point_t *intro, const char *pk_digest,
tor_assert(intro);
while ((circ = circuit_get_next_by_pk_and_purpose(circ,pk_digest,
CIRCUIT_PURPOSE_S_INTRO))) {
- if (!strcasecmp(circ->build_state->chosen_exit->identity_digest,
- intro->extend_info->identity_digest) &&
+ if (!memcmp(circ->build_state->chosen_exit->identity_digest,
+ intro->extend_info->identity_digest, DIGEST_LEN) &&
circ->rend_desc_version == desc_version) {
return circ;
}
@@ -1036,8 +1036,8 @@ find_intro_circuit(rend_intro_point_t *intro, const char *pk_digest,
circ = NULL;
while ((circ = circuit_get_next_by_pk_and_purpose(circ,pk_digest,
CIRCUIT_PURPOSE_S_ESTABLISH_INTRO))) {
- if (!strcasecmp(circ->build_state->chosen_exit->identity_digest,
- intro->extend_info->identity_digest) &&
+ if (!memcmp(circ->build_state->chosen_exit->identity_digest,
+ intro->extend_info->identity_digest, DIGEST_LEN) &&
circ->rend_desc_version == desc_version) {
return circ;
}