Index: /home/karsten/diss/tor/tor-0_2_0_12_alpha/src/or/rendclient.c =================================================================== --- /home/karsten/diss/tor/tor-0_2_0_12_alpha/src/or/rendclient.c (revision 12873) +++ /home/karsten/diss/tor/tor-0_2_0_12_alpha/src/or/rendclient.c (working copy) @@ -337,11 +337,21 @@ return 0; } + log_info(LD_REND, "Removing failed intro point for service %s. " + "We still have a valid descriptor with %d intro points.", + escaped_safe_str(query), ent->parsed->n_intro_points); if (ent->parsed->intro_point_extend_info) { + log_info(LD_REND, "The descriptor has its intro points stored as extend " + "infos rather than nicknames. Failed intro point is %s", + hex_str(failed_intro->identity_digest, DIGEST_LEN)); for (i=0; i < ent->parsed->n_intro_points; ++i) { + log_info(LD_REND, "Comparing with intro point %s...", + hex_str(ent->parsed->intro_point_extend_info[i]->identity_digest, + DIGEST_LEN)); if (!memcmp(failed_intro->identity_digest, ent->parsed->intro_point_extend_info[i]->identity_digest, DIGEST_LEN)) { + log_info(LD_REND, "Found a match! Removing intro point."); tor_assert(!strcmp(ent->parsed->intro_points[i], ent->parsed->intro_point_extend_info[i]->nickname)); tor_free(ent->parsed->intro_points[i]); @@ -352,11 +362,19 @@ ent->parsed->intro_point_extend_info[i] = ent->parsed->intro_point_extend_info[ent->parsed->n_intro_points]; break; + } else { + log_info(LD_REND, "No match."); } } } else { + log_info(LD_REND, "The descriptor has its intro points stored as " + "nicknames rather than extend infos. Failed intro " + "point is %s", failed_intro->nickname); for (i=0; i < ent->parsed->n_intro_points; ++i) { + log_info(LD_REND, "Comparing with intro point %s...", + ent->parsed->intro_points[i]); if (!strcasecmp(ent->parsed->intro_points[i], failed_intro->nickname)) { + log_info(LD_REND, "Found a match! Removing intro point."); tor_free(ent->parsed->intro_points[i]); ent->parsed->intro_points[i] = ent->parsed->intro_points[--ent->parsed->n_intro_points]; @@ -361,9 +379,13 @@ ent->parsed->intro_points[i] = ent->parsed->intro_points[--ent->parsed->n_intro_points]; break; + } else { + log_info(LD_REND, "No match."); } } } + log_info(LD_REND, "Our descriptor now has %d intro points.", + ent->parsed->n_intro_points); if (!ent->parsed->n_intro_points) { log_info(LD_REND,