mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 15:43:32 +01:00
Fix bug 763. When a hidden service is giving up on an introduction point candidate that was not included in the last published rendezvous descriptor, don't reschedule publication of the next descriptor.
svn:r15825
This commit is contained in:
parent
cb7cc9e12d
commit
9231858ff5
@ -16,6 +16,10 @@ Changes in version 0.2.1.3-alpha - 2008-07-xx
|
|||||||
- Stop using __attribute__((nonnull)) with GCC: it can give us useful
|
- Stop using __attribute__((nonnull)) with GCC: it can give us useful
|
||||||
warnings (occasionally), but it can also cause the compiler to
|
warnings (occasionally), but it can also cause the compiler to
|
||||||
eliminate error-checking code. Suggested by Peter Gutmann.
|
eliminate error-checking code. Suggested by Peter Gutmann.
|
||||||
|
- When a hidden service is giving up on an introduction point candidate
|
||||||
|
that was not included in the last published rendezvous descriptor,
|
||||||
|
don't reschedule publication of the next descriptor. Fixes bug 763.
|
||||||
|
Bugfix on 0.0.9.3.
|
||||||
|
|
||||||
|
|
||||||
Changes in version 0.2.0.29-rc - 2008-07-08
|
Changes in version 0.2.0.29-rc - 2008-07-08
|
||||||
|
@ -1256,14 +1256,31 @@ rend_services_introduce(void)
|
|||||||
for (j=0; j < smartlist_len(service->intro_nodes); ++j) {
|
for (j=0; j < smartlist_len(service->intro_nodes); ++j) {
|
||||||
intro = smartlist_get(service->intro_nodes, j);
|
intro = smartlist_get(service->intro_nodes, j);
|
||||||
router = router_get_by_digest(intro->extend_info->identity_digest);
|
router = router_get_by_digest(intro->extend_info->identity_digest);
|
||||||
if (!router || !find_intro_circuit(intro, service->pk_digest,
|
if (!router) {
|
||||||
service->descriptor_version)) {
|
log_warn(LD_BUG, "We have picked router %s as introduction point, "
|
||||||
|
"but we don't have its router descriptor. Skipping.",
|
||||||
|
intro->extend_info->nickname);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!find_intro_circuit(intro, service->pk_digest,
|
||||||
|
service->descriptor_version)) {
|
||||||
log_info(LD_REND,"Giving up on %s as intro point for %s.",
|
log_info(LD_REND,"Giving up on %s as intro point for %s.",
|
||||||
intro->extend_info->nickname, service->service_id);
|
intro->extend_info->nickname, service->service_id);
|
||||||
|
if (service->desc) {
|
||||||
|
SMARTLIST_FOREACH(service->desc->intro_nodes, rend_intro_point_t *,
|
||||||
|
dintro, {
|
||||||
|
if (!memcmp(dintro->extend_info->identity_digest,
|
||||||
|
intro->extend_info->identity_digest, DIGEST_LEN)) {
|
||||||
|
log_info(LD_REND, "The intro point we are giving up on was "
|
||||||
|
"included in the last published descriptor. "
|
||||||
|
"Marking current descriptor as dirty.");
|
||||||
|
service->desc_is_dirty = now;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
rend_intro_point_free(intro);
|
rend_intro_point_free(intro);
|
||||||
smartlist_del(service->intro_nodes,j--);
|
smartlist_del(service->intro_nodes,j--);
|
||||||
changed = 1;
|
changed = 1;
|
||||||
service->desc_is_dirty = now;
|
|
||||||
}
|
}
|
||||||
smartlist_add(intro_routers, router);
|
smartlist_add(intro_routers, router);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user