From 739c21e97b5c78ee76c7283993e7ca01f6d3beec Mon Sep 17 00:00:00 2001 From: Robert Ransom Date: Tue, 18 Oct 2011 07:08:02 -0700 Subject: Free rend_data and intro_key when extra intro circs become general-purpose --- src/or/rendservice.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src') diff --git a/src/or/rendservice.c b/src/or/rendservice.c index 6ed9650fc..0f5731912 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -1421,7 +1421,20 @@ rend_service_intro_has_opened(origin_circuit_t *circuit) log_info(LD_CIRC|LD_REND, "We have just finished an introduction " "circuit, but we already have enough. Redefining purpose to " "general; leaving as internal."); + TO_CIRCUIT(circuit)->purpose = CIRCUIT_PURPOSE_C_GENERAL; + + { + rend_data_t *rend_data = circuit->rend_data; + circuit->rend_data = NULL; + rend_data_free(rend_data); + } + { + crypto_pk_env_t *intro_key = circuit->intro_key; + circuit->intro_key = NULL; + crypto_free_pk_env(intro_key); + } + circuit_has_opened(circuit); return; } -- cgit v1.2.3