[tor-bugs] #2401 [- Select a component]: rend_cache_store(): We already have a v2 descriptor for service xxxxx

Tor Bug Tracker & Wiki torproject-admin at torproject.org
Mon Jan 17 14:29:15 UTC 2011


#2401: rend_cache_store(): We already have a v2 descriptor for service xxxxx
------------------------------+---------------------------------------------
 Reporter:  prof7bit          |        Type:  defect              
   Status:  new               |    Priority:  normal              
Milestone:                    |   Component:  - Select a component
  Version:  Tor: unspecified  |    Keywords:                      
   Parent:                    |  
------------------------------+---------------------------------------------
 This is happening with the current 0.2.1.29 and the current alpha.

 When a hidden service is restarted the old intro points are not valid
 anymore. Tor seems to notice this and will fetch a new descriptor when it
 has run out of intro points but then after doing this expensive operation
 it simply discards it with the excuse that there is already *some*
 descriptor there. The expensive operation of fetching has been done for
 nothing.

 The next time it will again try the old descriptor of which it already
 *knows* that there are no valid intro points and fetch a new one (possibly
 better one) again, but only to discard it without even looking at it,
 again and again and again.

 I have seen this going on for quite a long time sometimes. Sometimes I
 have been unable to connect to a hidden service of which I *knew* that was
 running for many hours and I'm sure if it had not discarded the newly
 downloaded descriptor every time it would have been able to connect
 eventually.

 Something is still wrong with this whole caching logic. I am making heavy
 use of hidden services with TorChat and sometimes it is really painful
 watching the logs and watching it not being able to connect to a service
 that *IS* running for hours and not being able to do anything about it.

 rend_cache_store() should store the descriptor and replace the old one in
 all cases. Either it is the exact same, then it has no effect at all or it
 is different (then it is in all likelihood a better one than the one it
 had before because it was fetched later than the cached one)

 Alternatively there could be made a possibility to manually clear the
 cache via the control protocol, either the complete cache or for an
 individual service.

 below is a log from the current stable version:

 {{{
 bernd at t40:~\ $ tail -f .torchat/Tor/tor.log | grep wa5w
 Jan 17 14:36:10.388 [notice] Tried for 120 seconds to get a connection to
 wa5wauj22un2au6o:11009. Giving up. (waiting for rendezvous desc)
 Jan 17 14:36:16.904 [info] connection_ap_handshake_rewrite_and_attach():
 Got a hidden service request for ID 'wa5wauj22un2au6o'
 Jan 17 14:36:16.904 [info] circuit_get_open_circ_or_launch(): No intro
 points for 'wa5wauj22un2au6o': re-fetching service descriptor.
 Jan 17 14:36:16.904 [info] rend_client_refetch_renddesc(): Fetching
 rendezvous descriptor for service "wa5wauj22un2au6o"
 Jan 17 14:36:18.682 [info] rend_cache_store(): We already have a v2
 descriptor for service wa5wauj22un2au6o.
 Jan 17 14:38:16.832 [notice] Tried for 120 seconds to get a connection to
 wa5wauj22un2au6o:11009. Giving up. (waiting for rendezvous desc)
 Jan 17 14:38:27.712 [info] connection_ap_handshake_rewrite_and_attach():
 Got a hidden service request for ID 'wa5wauj22un2au6o'
 Jan 17 14:38:27.712 [info] circuit_get_open_circ_or_launch(): No intro
 points for 'wa5wauj22un2au6o': re-fetching service descriptor.
 Jan 17 14:38:27.712 [info] rend_client_refetch_renddesc(): Fetching
 rendezvous descriptor for service "wa5wauj22un2au6o"
 Jan 17 14:38:29.226 [info] rend_cache_store(): We already have a v2
 descriptor for service wa5wauj22un2au6o.
 Jan 17 14:40:27.460 [notice] Tried for 120 seconds to get a connection to
 wa5wauj22un2au6o:11009. Giving up. (waiting for rendezvous desc)
 Jan 17 14:40:31.442 [info] connection_ap_handshake_rewrite_and_attach():
 Got a hidden service request for ID 'wa5wauj22un2au6o'
 Jan 17 14:40:31.442 [info] circuit_get_open_circ_or_launch(): No intro
 points for 'wa5wauj22un2au6o': re-fetching service descriptor.
 Jan 17 14:40:31.442 [info] rend_client_refetch_renddesc(): Fetching
 rendezvous descriptor for service "wa5wauj22un2au6o"
 Jan 17 14:40:32.682 [info] rend_cache_store(): We already have a v2
 descriptor for service wa5wauj22un2au6o.
 Jan 17 14:42:31.484 [notice] Tried for 120 seconds to get a connection to
 wa5wauj22un2au6o:11009. Giving up. (waiting for rendezvous desc)
 Jan 17 14:42:41.493 [info] connection_ap_handshake_rewrite_and_attach():
 Got a hidden service request for ID 'wa5wauj22un2au6o'
 Jan 17 14:42:41.493 [info] circuit_get_open_circ_or_launch(): No intro
 points for 'wa5wauj22un2au6o': re-fetching service descriptor.
 Jan 17 14:42:41.493 [info] rend_client_refetch_renddesc(): Fetching
 rendezvous descriptor for service "wa5wauj22un2au6o"
 Jan 17 14:42:42.191 [info] rend_cache_store(): We already have a v2
 descriptor for service wa5wauj22un2au6o.
 Jan 17 14:44:41.605 [notice] Tried for 120 seconds to get a connection to
 wa5wauj22un2au6o:11009. Giving up. (waiting for rendezvous desc)
 Jan 17 14:44:54.441 [info] connection_ap_handshake_rewrite_and_attach():
 Got a hidden service request for ID 'wa5wauj22un2au6o'
 Jan 17 14:44:54.441 [info] circuit_get_open_circ_or_launch(): No intro
 points for 'wa5wauj22un2au6o': re-fetching service descriptor.
 Jan 17 14:44:54.441 [info] rend_client_refetch_renddesc(): Fetching
 rendezvous descriptor for service "wa5wauj22un2au6o"
 Jan 17 14:44:55.229 [info] rend_cache_store(): We already have a v2
 descriptor for service wa5wauj22un2au6o.
 Jan 17 14:46:54.864 [notice] Tried for 120 seconds to get a connection to
 wa5wauj22un2au6o:11009. Giving up. (waiting for rendezvous desc)
 Jan 17 14:47:03.401 [info] connection_ap_handshake_rewrite_and_attach():
 Got a hidden service request for ID 'wa5wauj22un2au6o'
 Jan 17 14:47:03.401 [info] connection_ap_handshake_rewrite_and_attach():
 Stale descriptor wa5wauj22un2au6o. Re-fetching.
 Jan 17 14:47:03.418 [info] directory_get_from_hs_dir(): Sending fetch
 request for v2 descriptor for service 'wa5wauj22un2au6o' with descriptor
 ID 'z3zqz265onwi4jdsvqip5xclgglnjk4g', auth type 0, and descriptor cookie
 '[none]' to hidden service directory 'Slipstream' on port 9030.
 Jan 17 14:47:03.418 [info] rend_client_refetch_renddesc(): Fetching
 rendezvous descriptor for service "wa5wauj22un2au6o"
 Jan 17 14:47:05.364 [info] rend_cache_store(): We already have a v2
 descriptor for service wa5wauj22un2au6o.
 Jan 17 14:47:11.039 [info] circuit_get_open_circ_or_launch(): Chose
 '$714AF90AFF324373D6F6A4393084D781C4219FFD' as intro point for
 'wa5wauj22un2au6o'.
 Jan 17 14:47:43.529 [info] circuit_get_open_circ_or_launch(): Chose
 '$CAC54282E75D1459B6174BE696303035929894CD' as intro point for
 'wa5wauj22un2au6o'.
 Jan 17 14:47:49.841 [info] circuit_get_open_circ_or_launch(): Chose
 '$52AEEA15F22B17F6DC760FB4F0DAC7F89DF7934D' as intro point for
 'wa5wauj22un2au6o'.


 }}}
 (btw 0.2.1.29 is missing from the dropdown list below)

-- 
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/2401>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list