Extend NEWNYM to also clear rendezvous caches and rendezvous connections
Rob and I would like to measure hidden/onion/rendezvous service performance by running two local tor clients to host and repeatedly access a service, respectively. In order to make subsequent requests as independent as possible, we'd want to clear all rendezvous caches and forget about rendezvous connections before making the next request. [Roger suggests on #1944](https://trac.torproject.org/projects/tor/ticket/1944#comment:42) to add the necessary functionality to the NEWNYM control command. Here's the current patch that we're using, which is loosely based on arma's bug1944 branch and rebased to master from a year or so ago (4c8b809). Of course, the downside of using this patch is that we can't just use a recent-enough tor but have to patch a tor and also maintain the patch. The patch is pretty simple: ``` diff --git a/src/or/main.c b/src/or/main.c index 094120f..ad7fa0b 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -2102,9 +2102,13 @@ process_signal(uintptr_t sig) control_event_signal(sig); break; case SIGUSR2: - switch_logs_debug(); - log_debug(LD_GENERAL,"Caught USR2, going to loglevel debug. " - "Send HUP to change back."); + /* Replace the USR2 functionality with bug1944-specific plans. + * Ugly hack, but it'll do. */ + log_info(LD_GENERAL, "Clearing all rendezvous caches and " + "forgetting about rendezvous connections..."); + rend_cache_purge(); + rend_client_purge_last_hid_serv_requests(); + circuit_mark_all_dirty_circs_as_unusable(); control_event_signal(sig); break; case SIGHUP: ``` If there are no major concerns against this idea, I'll prepare and test a branch that actually does things when receiving a NEWNYM command, not when receiving SIGUSR2. Thanks for considering this!
issue