Skip to content
  • Roger Dingledine's avatar
    Allow 0.2.3.x clients to use 0.2.2.x bridges. · a0f08977
    Roger Dingledine authored
    Previously the client would ask the bridge for microdescriptors, which are
    only supported in 0.2.3.x and later, and then fail to bootstrap when it
    didn't get the answers it wanted. Fixes bug 4013; bugfix on 0.2.3.2-alpha.
    
    The fix here is to revert to using normal descriptors if any of our
    bridges are known to not support microdescs. This is not ideal, a) because
    we'll start downloading a microdesc consensus as soon as we get a bridge
    descriptor, and that will waste time if we later get a bridge descriptor
    that tells us we don't like microdescriptors; and b) by changing our mind
    we're leaking to our other bridges that we have an old-version bridge.
    
    The alternate fix would have been to change
    we_use_microdescriptors_for_circuits() to ask if *any* of our bridges
    can support microdescriptors, and then change the directory logic that
    picks a bridge to only select from those that do. For people living in
    the future, where 0.2.2.x is obsolete, there won't be a difference.
    
    Note that in either of these potential fixes, we have risk of oscillation
    if our one funny-looking bridges goes away / comes back.
    a0f08977