--- /dev/null
+ o Minor bugfixes (hidden service):
+ - Two possible underflow which would ultimately lead to creating a lot of
+ introduction points circuits and closing them in a non stop loop. Fixes
+ bug 21302; bugfix on tor-0.2.7.2-alpha.
+ - Cleanup expiring intro point nodes if no circuit is associated to it
+ anymore. It was causing, rarely, the service to not open enough
+ introduction points circuit in the case we had dead expiring nodes.;
+ bugfix on tor-0.2.7.2-alpha.
{
tor_assert(service);
+ /* Remove any expired nodes that doesn't have a circuit. */
+ SMARTLIST_FOREACH_BEGIN(service->expiring_nodes, rend_intro_point_t *,
+ intro) {
+ origin_circuit_t *intro_circ =
+ find_intro_circuit(intro, service->pk_digest);
+ if (intro_circ) {
+ continue;
+ }
+ /* No more circuit, cleanup the into point object. */
+ SMARTLIST_DEL_CURRENT(service->expiring_nodes, intro);
+ rend_intro_point_free(intro);
+ } SMARTLIST_FOREACH_END(intro);
+
SMARTLIST_FOREACH_BEGIN(service->intro_nodes, rend_intro_point_t *,
intro) {
/* Find the introduction point node object. */