Skip to content
  • David Goulet's avatar
    port: Don't ignore ports of a different family · 70aad1e9
    David Goulet authored
    Commit c3a0f757
    
     added this feature for ORPort
    that we ignore any port that is not the family of our default address when
    parsing the port. So if port_parse_config() was called with an IPv4 default
    address, all IPv6 address would be ignored.
    
    That makes sense for ORPort since we call twice port_parse_config() for
    0.0.0.0 and [::] but for the rest of the ports, it is not good since a
    perfectly valid configuration can be:
    
      SocksPort 9050
      SocksPort [::1]:9050
    
    Any non-ORPort only binds by default to an IPv4 except the ORPort that binds
    to both IPv4 and IPv6 by default.
    
    The fix here is to always parse all ports within port_parse_config() and then,
    specifically for ORPort, remove the duplicates or superseding ones. The
    warning is only emitted when a port supersedes another.
    
    A unit tests is added to make sure SocksPort of different family always exists
    together.
    
    Fixes #40183
    
    Signed-off-by: David Goulet's avatarDavid Goulet <dgoulet@torproject.org>
    70aad1e9