<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">For the sake of documentation I thought I would share this here:</div><div class=""><br class=""></div><div class="">I have a (test) Hidden Service, running vanilla tor 0.2.6.10</div><div class=""><br class=""></div><div class="">The HS torrc is:</div><div class=""><br class=""></div><div class=""><font face="Menlo" class="">  ControlPort 9051</font></div><div class=""><font face="Menlo" class="">  DataDirectory /home/alecm/tor-dev/data</font></div><div class=""><font face="Menlo" class="">  SafeLogging 0</font></div><div class=""><font face="Menlo" class="">  Log info stdout</font></div><div class=""><font face="Menlo" class="">  HiddenServiceDir /home/alecm/tor-dev/hs</font></div><div class=""><font face="Menlo" class="">  HiddenServicePort 80 localhost:80</font></div><div class=""><font face="Menlo" class="">  SocksPort 0</font></div><div class=""><font face="Menlo" class="">  RendPostPeriod 0 seconds</font></div><div class=""><br class=""></div><div class="">I also have an OSX version of Tor Browser Bundle - version 5.5a4 (tor 0.2.7.4-rc)</div><div class=""><br class=""></div><div class="">I amended /Applications/TorBrowser.app/TorBrowser/Data/Tor/torrc-defaults to include:</div><div class=""><br class=""></div><div class=""><font face="Menlo" class="">  SafeLogging 0</font></div><div class=""><font face="Menlo" class="">  Log info file /tmp/tor-log.txt</font></div><div class=""><br class=""></div><div class="">...so that I can see what is going on.</div><div class=""><br class=""></div><div class="">I launched the Hidden Service (HS)</div><div class=""><br class=""></div><div class="">I accessed the HS from TBB - Successful Page Load!</div><div class=""><br class=""></div><div class="">The TBB logfile contains the following sequence, pertinent to the first connection attempt, with manual edits:</div><div class=""><br class=""></div><div class="">  ---- start ----</div><div class="">  >Nov 12 17:41:13.000 [info] directory_get_from_hs_dir(): Sending fetch request for v2 descriptor for service 'MY_ONION' with descriptor ID 'MY_DESC_1', auth type 0, and descriptor cookie '[none]' to hidden service directory HSDIR_1</div><div class="">  >Nov 12 17:45:02.000 [info] connection_ap_handshake_rewrite_and_attach(): Got a hidden service request for ID 'MY_ONION'</div><div class="">  >Nov 12 17:45:02.000 [info] connection_ap_handshake_rewrite_and_attach(): Unknown descriptor MY_ONION. Fetching.</div><div class="">  >Nov 12 17:45:02.000 [info] directory_get_from_hs_dir(): Sending fetch request for v2 descriptor for service 'MY_ONION' with descriptor ID 'MY_DESC_1', auth type 0, and descriptor cookie '[none]' to hidden service directory HSDIR_2</div><div class="">  >Nov 12 17:45:03.000 [info] circuit_get_open_circ_or_launch(): Chose INTROPOINT_1 as intro point for 'MY_ONION'.</div><div class="">  >Nov 12 17:45:03.000 [info] rend_client_note_connection_attempt_ended(): Connection attempt for MY_ONION has ended; cleaning up temporary state.</div><div class="">  >Nov 12 17:45:03.000 [info] link_apconn_to_circ(): Looks like completed circuit to hidden service does allow optimistic data for connection to MY_ONION</div><div class="">  ---- end ----</div><div class=""><br class=""></div><div class="">This looks good.</div><div class=""><br class=""></div><div class="">I killed the HS - the means of killing appears immaterial, SIGINT, SIGTERM, same thing always happens.</div><div class=""><br class=""></div><div class="">I waited about 60 seconds.</div><div class=""><br class=""></div><div class="">I re-launched the HS.</div><div class=""><br class=""></div><div class="">I accessed the HS from (still running, not restarted) TBB using Shift-Reload to force a page-refresh - Failure!</div><div class=""><br class=""></div><div class="">The TBB logfile contains the following sequence, pertinent to the second connection attempt:</div><div class=""><br class=""></div><div class="">  ---- start ----</div><div class="">  >Nov 12 17:46:27.000 [info] connection_ap_handshake_rewrite_and_attach(): Got a hidden service request for ID 'MY_ONION'</div><div class="">  >Nov 12 17:46:27.000 [info] circuit_get_open_circ_or_launch(): Chose INTROPOINT_3 as intro point for 'MY_ONION'.</div><div class="">  >Nov 12 17:46:27.000 [info] rend_client_introduction_acked(): Got nack for MY_ONION from INTROPOINT_3...</div><div class="">  >Nov 12 17:46:27.000 [info] rend_client_report_intro_point_failure(): 2 options left for "MY_ONION".</div><div class="">  >Nov 12 17:46:28.000 [info] rend_client_introduction_acked(): Got nack for MY_ONION from INTROPOINT_2...</div><div class="">  >Nov 12 17:46:28.000 [info] rend_client_report_intro_point_failure(): 1 options left for "MY_ONION".</div><div class="">  >Nov 12 17:46:28.000 [info] rend_client_introduction_acked(): Got nack for MY_ONION from INTROPOINT_1...</div><div class="">  >Nov 12 17:46:28.000 [info] rend_client_report_intro_point_failure(): No more intro points remain for "MY_ONION". Re-fetching descriptor.</div><div class=""><br class=""></div><div class="">Okay, this makes sense, all the IPs are invalid because I killed the daemon, none of them are reachable...</div><div class=""><br class=""></div><div class="">  >Nov 12 17:46:28.000 [info] directory_get_from_hs_dir(): Sending fetch request for v2 descriptor for service 'MY_ONION' with descriptor ID 'MY_DESC_2', auth type 0, and descriptor cookie '[none]' to hidden service directory HSDIR_3</div><div class=""><br class=""></div><div class="">Wait, is it relevant that it has picked descriptor ID 'MY_DESC_2' here, not the prior 'MY_DESC_1'?  The latter crops-up further down.  Perhaps this is a DHT thing?  This is the only reference to MY_DESC_2...</div><div class=""><br class=""></div><div class="">  >Nov 12 17:46:29.000 [info] rend_cache_store_v2_desc_as_client(): Service descriptor with service ID MY_ONION, every intro points are unusable. Discarding it.</div><div class=""><br class=""></div><div class="">That sounds okay, garbage collection of dead data is good...</div><div class=""><br class=""></div><div class="">  >Nov 12 17:46:29.000 [info] directory_get_from_hs_dir(): Sending fetch request for v2 descriptor for service 'MY_ONION' with descriptor ID 'MY_DESC_1', auth type 0, and descriptor cookie '[none]' to hidden service directory HSDIR_4</div><div class=""><br class=""></div><div class="">Wait, now we are re-fetching MY_DESC_1 again?...</div><div class=""><br class=""></div><div class="">  >Nov 12 17:46:30.000 [info] rend_cache_store_v2_desc_as_client(): We already have this service descriptor MY_ONION.</div><div class=""><br class=""></div><div class="">And it thinks we already have it? But didn't we just discard it?...</div><div class=""><br class=""></div><div class="">  >Nov 12 17:46:30.000 [notice] Closing stream for 'MY_ONION.onion': hidden service is unavailable (try again later).</div><div class=""><br class=""></div><div class="">And there is the connection failure, and it looks like it didn't find a new descriptor, or rejected a new one if it found it - assuming it found it at all...</div><div class=""><br class=""></div><div class="">  >Nov 12 17:46:30.000 [info] rend_client_note_connection_attempt_ended(): Connection attempt for MY_ONION has ended; cleaning up temporary state.</div><div class="">  >Nov 12 17:46:30.000 [info] rend_client_note_connection_attempt_ended(): Connection attempt for MY_ONION has ended; cleaning up temporary state.</div><div class=""><br class=""></div><div class="">Try "reload" again, just for good luck:</div><div class=""><br class=""></div><div class="">  >Nov 12 17:46:40.000 [info] connection_ap_handshake_rewrite_and_attach(): Got a hidden service request for ID 'MY_ONION'</div><div class="">  >Nov 12 17:46:40.000 [info] connection_ap_handshake_rewrite_and_attach(): Unknown descriptor MY_ONION. Fetching.</div><div class="">  >Nov 12 17:46:40.000 [info] directory_get_from_hs_dir(): Sending fetch request for v2 descriptor for service 'MY_ONION' with descriptor ID 'MY_DESC_1', auth type 0, and descriptor cookie '[none]' to hidden service directory HSDIR_2</div><div class="">  >Nov 12 17:46:41.000 [info] rend_cache_store_v2_desc_as_client(): We already have this service descriptor MY_ONION.</div><div class="">  >Nov 12 17:46:41.000 [notice] Closing stream for 'MY_ONION.onion': hidden service is unavailable (try again later).</div><div class="">  >Nov 12 17:46:41.000 [info] rend_client_note_connection_attempt_ended(): Connection attempt for MY_ONION has ended; cleaning up temporary state.</div><div class="">  >Nov 12 17:46:41.000 [info] rend_client_note_connection_attempt_ended(): Connection attempt for MY_ONION has ended; cleaning up temporary state.</div><div class="">  ---- end ----</div><div class=""><br class=""></div><div class="">So, it looks like one of three things:</div><div class=""><br class=""></div><div class="">- perhaps TBB is not actually discarding the dead descriptor</div><div class="">- or perhaps TBB is re-fetching the old descriptor and failing connections again</div><div class="">- or perhaps TBB is fetching the new descriptor and rejecting it in favour of the old one, which it hasn't really discarded.</div><div class=""><br class=""></div><div class="">In any case: killing TBB and restarting it seems to fix this situation, so it's something on the client side at fault?</div><div class=""><br class=""></div><div class="">    - alec</div><div class=""><br class=""></div></body></html>