1. 04 May, 2020 8 commits
    • Fabrice Bellet's avatar
      agent: stay in aggressive mode after conncheck has started · 0b80cbba
      Fabrice Bellet authored
      When remote tcp candidates are received late after the conncheck has
      started, RFC 6554 suggests that we switch the nomination mode back from
      aggressive to regular. The problem is that some stun requests may
      already be inflight with the use-candidate stun flag set, and reverting
      to regular mode in that case is too late, because these inflight
      requests may nominate a pair on the remote agent, and not on the local
      agent. We prefer to just ignore remote tcp candidates that are received
      after the component state has reached state CONNECTING.
      0b80cbba
    • Fabrice Bellet's avatar
    • Fabrice Bellet's avatar
      agent: fix boundary test of max turn servers and local addresses · e7aaa5dc
      Fabrice Bellet authored
      We can accept up to 8 turn servers, with turn preference value
      starting at zero. Also fix the error message.
      e7aaa5dc
    • Fabrice Bellet's avatar
      discovery: add a unique local preference value per turn server · 65fd9663
      Fabrice Bellet authored
      This value is built from the position in the component turn servers
      list, and from the base address network interface position in the list
      of network interfaces. This value is used to ensure a unique candidate
      priority for each one. Also ensure that the fields that compose the
      local preference don't overlap, by checking their maximum value.  See
      RFC-8445, section 5.1.2.2 "Guidelines for Choosing Type and Local
      Preferences".
      65fd9663
    • Fabrice Bellet's avatar
    • Fabrice Bellet's avatar
      candidate: ensuring stun priority uniqueness no more needed · f997215d
      Fabrice Bellet authored
      The uniqueness of candidate priorities is achieved by the iteration on
      the ip local addresses for local host candidates, and also on their base
      address for reflexive and relay candidates. Helper function checking
      its uniqueness at allocation time is not required anyore.
      
      The priority of the stun request (prflx_priority) is built from the
      priority of the local candidate of the pair, according the RFC 5245,
      section 7.1.2.1. This priority must be identical to a virtual "local
      candidate of type peer-reflexive that would be learned as a consequence
      of a check from this local candidate."
      
      Outgoing stun requests will come from local candidates of type host or
      type relayed. The priority uniqueness of local candidates of type host
      implies the uniqueness of the computed peer-reflexive priority.  And
      relay local candidates cannot produce a peer-reflexive local candidate
      by design, so we can safely use their unique local priority too in
      the stun request.
      f997215d
    • Tim-Philipp Müller's avatar
      subprojects: bump glib wrap to latest stable branch for msys build · ab14d9ed
      Tim-Philipp Müller authored
      Should fix build failures with latest mingw compiler in msys.
      ab14d9ed
    • Tim-Philipp Müller's avatar
      ci: update windows image · d2e491c9
      Tim-Philipp Müller authored
      The old one (v8) was removed from the gstreamer registry it seems.
      d2e491c9
  2. 02 Mar, 2020 10 commits
  3. 28 Feb, 2020 1 commit
  4. 17 Feb, 2020 2 commits
  5. 14 Feb, 2020 2 commits
    • Jakub Adam's avatar
      conncheck: Connection check reply must have a remote candidate · 502ddb83
      Jakub Adam authored
      Ensure that a conncheck reply is coming from an address and port of a
      known remote candidate and that the type of incoming socket matches that
      candidate's transport.
      
      Attemps to fix a Coverity issue in which no matching remote_candidate
      gets found for a connectivity reply in conn_check_handle_inbound_stun()
      (apparently due to transport mismatch), yet
      priv_map_reply_to_conn_check_request() still successfully matches it
      with a previous request.
      502ddb83
    • Jakub Adam's avatar
      conncheck: Typo fix · 7af761f3
      Jakub Adam authored
      7af761f3
  6. 13 Feb, 2020 9 commits
  7. 11 Feb, 2020 4 commits
    • Fabrice Bellet's avatar
      30d592e8
    • Fabrice Bellet's avatar
      agent: update the selected pair priority when foundation changes · dec008ca
      Fabrice Bellet authored
      The component selected pair priority may have its priority modified
      if the foundation of its remote candidate changes. This update needs
      to be recorded, even if its not signalled, since this value is used
      in the conncheck in priv_update_selected_pair().
      dec008ca
    • Fabrice Bellet's avatar
      a0b48d44
    • Fabrice Bellet's avatar
      agent: verify the best nominated pair after priorities recalculation · 8a3e8c76
      Fabrice Bellet authored
      When we get a set_remote_candidate late after the start of the
      conncheck, some remote candidates type may change from peer-reflexive
      to server-reflexive. This required a recalculation of the foundations
      and of the priorities of the related pairs.
      
      This recalculation may change the pairs ordering in the conncheck list:
      a srflx:prflx pair becoming a srflx:srflx pair will have a lower
      priority (RFC 8445, section 5.1.2.1 "Recommended Formula", "the type
      preference for peer-reflexive candidates MUST be higher than that of
      server-reflexive candidates.")
      
      This recalculation is required to maintain the same pairs ordering in
      both agent.
      
      But in some cases, in aggressive nomination mode, this may also change
      the selected pair, if this recalculation changed the highest priority
      pair with the nominated flag.
      8a3e8c76
  8. 10 Feb, 2020 4 commits