[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[PATCH] Fix stale descriptor refetch dropping connection



From: Marcus Griep <marcus@xxxxxxxx>

When a refetch is requested for a v2 hidden service descriptor,
but we already have one cached, proceed with the connection
rather than dropping it into limbo.

Signed-off-by: Marcus Griep <marcus@xxxxxxxx>
---

 When making a connection, "rewrite_and_attach" considers a hidden
 service descriptor to be stale after 15 minutes. When this occurs,
 it asks the rendclient to refetch the descriptor. The rendclient
 notices that it already has a v2 hidden service descriptor cached
 and drops the request. This results in the connection falling
 through the cracks as no function attempts to further the
 connection attempt.

 This fix adds a single line which, instead of dropping the
 refetch request, passes the query on to be attempted with the
 cached descriptor.

 src/or/rendclient.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/src/or/rendclient.c b/src/or/rendclient.c
index 6fe3a69..a161c5c 100644
--- a/src/or/rendclient.c
+++ b/src/or/rendclient.c
@@ -495,6 +495,7 @@ rend_client_refetch_v2_renddesc(const rend_data_t *rend_query)
   if (rend_cache_lookup_entry(rend_query->onion_address, -1, &e) > 0) {
     log_info(LD_REND, "We would fetch a v2 rendezvous descriptor, but we "
                       "already have that descriptor here. Not fetching.");
+    rend_client_desc_trynow(rend_query->onion_address);
     return;
   }
   log_debug(LD_REND, "Fetching v2 rendezvous descriptor for service %s",
-- 
1.6.0.4