I am currently working on ticket 8510: https://trac.torproject.org/projects/tor/ticket/8510
However, I notice that in the control spec, there is no event related to hidden service descriptors. Should we add a new event in the spec?
For example, we can have something like the following: HS_DESC SP REQUESTED SP OnionAddress SP DescptorID SP AuthType SP HsDir SP
Any thoughts?
The above basics seem fine.
The controller also needs to accept queries for onion descriptors, eg: getinfo n.onion [network]
If the descriptor is not cached, or it is cached but it is just now checked at query time and found to be expired, set cache to NULL, then fetch and cache it. If the descriptor is cached and not expired, allow an optional 'network' flag to force a refetch from the network and cache it again, but do not update cache unless the refetch was successful. Now the current descriptor is cached or NULL, decode and print all the fields contained within it (all the v2 fields for example). I would suggest one line per field. 'getinfo ...' always prints an additional special return header field line: 'n.onion status <status>', where <status> is 'fetchfail' or 'fetchok' or 'fromcache' depending on above modes/results. and also always prints the cached descriptor labels and data fields (if cache is NULL, just print empty date fields).