Do we have edge cases with rend_consider_descriptor_republication()? Can we refactor it to be cleaner?
Once a second we run rend_consider_descriptor_republication(), which proceeds if anything called router_dir_info_changed(), e.g. if a relay gets marked newly Running or newly not Running.
At first I thought there were bugs here that made us publish our hidden service descriptor much more often than needed. But I think all the logic lines up to only do the publish when we didn't have a microdesc for the relay in question but now we do. But we should see if this is really true.
And even if so, can we refactor this logic to be simpler yet still to retry appropriately if indeed there's a relay we ought to be publishing to? It seems like a lot of overkill for what hopefully will be a rare edge case to begin with. Unless I'm wrong?