From: Roger Dingledine Date: Fri, 14 Jan 2005 04:35:53 +0000 (+0000) Subject: when the hidden service launches a rendezvous circ, make sure it X-Git-Tag: tor-0.1.0.1-rc~465 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=dcf8b18215d0565d821ca31e784a501f88aab9d5;p=thirdparty%2Ftor.git when the hidden service launches a rendezvous circ, make sure it provides good uptime if any virtual_port of the service wants that. svn:r3355 --- diff --git a/src/or/rendservice.c b/src/or/rendservice.c index 141a4669f9..c3561198a8 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -342,6 +342,22 @@ rend_service_get_by_pk_digest(const char* digest) return NULL; } +/** Return 1 if any virtual port in service wants a circuit + * to have good uptime. Else return 0. + */ +static int +rend_service_requires_uptime(rend_service_t *service) { + int i; + rend_service_port_config_t *p; + + for (i=0; i < smartlist_len(service->ports); ++i) { + p = smartlist_get(service->ports, i); + if (smartlist_string_num_isin(get_options()->LongLivedPorts, p->virtual_port)) + return 1; + } + return 0; +} + /****** * Handle cells ******/ @@ -458,7 +474,8 @@ rend_service_introduce(circuit_t *circuit, const char *request, size_t request_l /* Launch a circuit to alice's chosen rendezvous point. */ for (i=0;iintro_nodes); ++j) { + for (j=0; j < smartlist_len(service->intro_nodes); ++j) { intro = smartlist_get(service->intro_nodes, j); router = router_get_by_nickname(intro); if (!router || !find_intro_circuit(router,service->pk_digest)) { @@ -906,7 +923,7 @@ rend_consider_services_upload(time_t now) { rend_service_t *service; int rendpostperiod = get_options()->RendPostPeriod; - for (i=0; i< smartlist_len(rend_service_list); ++i) { + for (i=0; i < smartlist_len(rend_service_list); ++i) { service = smartlist_get(rend_service_list, i); if (!service->next_upload_time) { /* never been uploaded yet */ service->next_upload_time =