1. 12 Jun, 2017 1 commit
    • Fabrice Bellet's avatar
      stun timer: make properties for stun timer tunables · 8bb210c5
      Fabrice Bellet authored
      Three STUN binding request properties should be customisable. RFC 5245
      describes the retransmission timer of the STUN transaction 'RTO', and
      RFC 5389 describes the number of retransmissions to send until a
      response is received 'Rc'. The third property is the 'RTO' when
      a reliable connection is used.
      
      RFC 5389 introduces a supplementary property 'Rm' as a multiplier used
      to compute the final timeout RTO * Rm. However, this property is not
      added in libnice, because this would require breaking the public API for
      STUN. Currently, our STUN implementation hardcodes a division by two for
      this final timeout.
      
      Differential Revision: https://phabricator.freedesktop.org/D1109
      8bb210c5
  2. 24 May, 2017 1 commit
    • Fabrice Bellet's avatar
      stun timer: move back to 5 retransmissions · 14362bdd
      Fabrice Bellet authored
      With the pacing behaviour of the ICE RFC 5245, the stun packets are
      send with an initial timeout that cannot be lower that 100ms, and that
      increases of 20ms for each new in-progress/waiting conncheck above 5.
      Typical initial timeout is in the range 100ms - 400ms (obtained when
      there are 20 in-progress/waiting connchecks).
      
      The rationale with this modification is that we consider that 4
      retransmissions with an initial timeout of 100ms and a last timeout of 4
      * 100 ms, gives (1 + 2 + 4 + 8 + 4) * 100ms = 1900ms for a response to
      be received after the initial stun request has been sent, which is
      probably enough in most situations. With an initial timeout of 400ms,
      this delay extends to 7600ms (this is proportional to the value of the
      initial timeout).
      
      Differential Revision: https://phabricator.freedesktop.org/D1109
      14362bdd
  3. 12 Apr, 2017 1 commit
    • Fabrice Bellet's avatar
      stun timer: fix timeout of the last retransmission · f6f704c5
      Fabrice Bellet authored
      According to RFC 5389, section 7.2.1, a special timeout is applied to
      the last retransmission (Rm * RTO), with Rm default value of 16, instead
      of (64 * RTO), 2^6 when the number of transmissions Rc is set to 7.
      
      As spotted by Olivier Crete, stun_timer_* is a public API, that cannot
      be changed, and the initial delay (RTO) is not preserved in the
      stun_timer_s struct. So we use a hack that implicitely guess Rm from the
      number of transmissions Rc, by generalizing the default value of the
      spec for Rm and Rc to other values of Rc passed in stun_timer_start(
      
      According to the spec, with the default value of Rc=7, the last delay
      should be (64 * RTO), and it is instead (16 * RTO). So the last delay
      can be computed by dividing the penultimate delay by two, instead of
      multiplying it by two.
      
      Differential Revision: https://phabricator.freedesktop.org/D1108
      f6f704c5
  4. 04 Apr, 2017 1 commit
  5. 03 Apr, 2017 1 commit
  6. 26 Oct, 2016 2 commits
    • Jakub Adam's avatar
      ms-ice: calculate FINGERPRINT according to [MS-ICE2] · b3910a9c
      Jakub Adam authored
      Connectivity checks that are fully conforming to [MS-ICE2] should
      contain IMPLEMENTATION-VERSION attribute ([MS-ICE2] 2.2.2.2) equal to 2
      and their FINGERPRINT should be calculated as described in RFC5389
      section 15.5 (i.e. using standard CRC lookup table).
      
      We need this because some Skype for Business clients no longer accept
      messages whose FINGERPRINT contains a value calculated using Microsoft's
      old custom CRC table (specified verbatim in [MS-ICE2] 3.1.4.8.2).
      
      The change creates a compatibility breakage with legacy Lync clients
      which will be fixed in following commits.
      
      Differential Revision: https://phabricator.freedesktop.org/D1136
      b3910a9c
    • Jakub Adam's avatar
      stun: add STUN_USAGE_ICE_COMPATIBILITY_MSICE2 · 71dc0022
      Jakub Adam authored
      Windows Live Messenger is a discontinued service. The only users of WLM
      mode seem to be Lync clients, so STUN_USAGE_ICE_COMPATIBILITY_WLM2009
      can be repurposed as [MS-ICE2] compatibility.
      
      We keep the WLM enumerator for the sake of API compatibility.
      
      Differential Revision: https://phabricator.freedesktop.org/D1135
      71dc0022
  7. 06 Jun, 2016 3 commits
  8. 27 May, 2016 1 commit
    • Fabrice Bellet's avatar
      stun: fix ice role conflict handling · acdc0b8b
      Fabrice Bellet authored
      This patch fixes the role conflict handling in stun ICE usage,
      according to RFC 5245, by adding including missing cases in the
      test. The role switch not only depends of the comparison of the
      stun ice-controlling/controlled attrib with the agent tie breaker
      value, but it also depends on the current role of the agent.
      
      This patch also changes the value returned by
      stun_usage_ice_conncheck_create_reply() when a role conflict exists
      but doesn't change the role of the agent, causing an error stun
      response. Previously, this case could not be differenciated by the
      caller from a case with no role conflict. Now by examinating the
      return value, and whether the control param changed, the caller
      can check the four possibles situations. The stun test suite is
      updated to match this change.
      
      Differential Revision: https://phabricator.freedesktop.org/D873
      acdc0b8b
  9. 26 May, 2016 1 commit
  10. 05 Mar, 2016 1 commit
  11. 02 Jan, 2015 1 commit
  12. 23 Jul, 2014 1 commit
  13. 15 May, 2014 1 commit
  14. 02 May, 2014 1 commit
  15. 16 Apr, 2014 1 commit
  16. 31 Mar, 2014 1 commit
  17. 31 Jan, 2014 1 commit
    • Philip Withnall's avatar
      stun: Add missing switch cases · 3a4cd47b
      Philip Withnall authored
      This appeases GCC’s -Wswitch-enum warning, and makes it more obvious
      that those enum cases have been explicitly considered, rather than just
      forgotten about.
      
      This introduces no functional changes.
      3a4cd47b
  18. 18 Dec, 2013 3 commits
  19. 24 Feb, 2012 1 commit
  20. 17 Feb, 2012 1 commit
  21. 30 Nov, 2011 1 commit
  22. 30 Aug, 2011 1 commit
  23. 24 Mar, 2011 2 commits
  24. 10 Feb, 2011 1 commit
  25. 28 Jan, 2011 1 commit
  26. 18 Jan, 2011 1 commit
  27. 17 Dec, 2010 2 commits
  28. 15 Dec, 2010 6 commits