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. 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
  3. 04 Apr, 2017 1 commit
  4. 03 Apr, 2017 5 commits
  5. 31 Mar, 2017 5 commits
  6. 28 Mar, 2017 1 commit
  7. 26 Oct, 2016 5 commits
    • Jakub Adam's avatar
      ms-ice: limit legacy connchecks as per [MS-ICE2] 3.1.4.8.2 · 2803a0b4
      Jakub Adam authored
      Client should stop sending connectivity checks with legacy FINGERPRINT
      when it receives a conncheck message containing IMPLEMENTATION-VERSION
      attribute.
      
      Differential Revision: https://phabricator.freedesktop.org/D1139
      2803a0b4
    • Jakub Adam's avatar
      ms-ice: legacy FINGERPRINT mode · 7e5ab23c
      Jakub Adam authored
      In order to preserve compatibility with clients which use custom CRC
      lookup table from [MS-ICE2], whenever a connectivity check request or
      reply is sent, an additional message is sent along. These two messages
      differ only in FINGERPRINT attribute - one uses regular CRC lookup table
      for calculation, the other uses the modified table.
      
      When a message is received and FINGERPRINT doesn't pass validation using
      regular CRC table, the receiver also tries to verify using the modified
      table.
      
      [MS-ICE2] 3.1.4.8.2 describes this procedure.
      
      The commit fixes compatibility with older MSOC and Lync clients.
      
      Differential Revision: https://phabricator.freedesktop.org/D1138
      7e5ab23c
    • Jakub Adam's avatar
      stun: add STUN_COMPATIBILITY_MSICE2 · dab34160
      Jakub Adam authored
      Windows Live Messenger is a discontinued service. We can repurpose
      STUN_COMPATIBILITY_WLM2009 as [MS-ICE2] compatibility.
      
      The orignial WLM enumerator is kept for the sake of API compatibility.
      
      Differential Revision: https://phabricator.freedesktop.org/D1137
      dab34160
    • 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
  8. 20 Jun, 2016 1 commit
  9. 06 Jun, 2016 2 commits
  10. 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
  11. 26 May, 2016 1 commit
  12. 05 Mar, 2016 1 commit
  13. 04 Sep, 2015 1 commit
    • Philip Withnall's avatar
      stun: Disable debug by default · 757f8aec
      Philip Withnall authored
      To match debug_enable in agent/debug.c. Debug can still be enabled by
      calling stun_debug_enable() or nice_debug_enable().
      
      Spotted on the mailing list by Tom Chen.
      757f8aec
  14. 02 Sep, 2015 1 commit
    • Jakub Adam's avatar
      ms-turn: don't wait for a reply to STUN_SEND request · ab4ced5a
      Jakub Adam authored
      As per [MS-TURN] Section 2.2.1, TURN message type 0x0104 "Send request
      response" isn't supported and the TURN server MUST NOT send them. Thus,
      libnice should not remember Send requests in agent->sent_ids because
      without replies coming, the number of allowed pending transaction gets
      quickly exhausted, causing our data packets to be dropped until a
      request timeout frees some space in the queue.
      
      This behavior resulted in choppy reception of our audio on a Lync client
      when connected via Lync Edge (TURN) Server.
      
      Maniphest Tasks: T126
      
      Reviewers: pwithnall
      
      Projects: #libnice
      
      Reviewed By: pwithnall
      
      Subscribers: pwithnall
      
      Differential Revision: https://phabricator.freedesktop.org/D223
      ab4ced5a
  15. 24 Jun, 2015 1 commit
  16. 23 Apr, 2015 1 commit
  17. 20 Apr, 2015 1 commit
  18. 14 Apr, 2015 1 commit
  19. 10 Mar, 2015 1 commit
  20. 11 Feb, 2015 2 commits
  21. 02 Jan, 2015 1 commit
  22. 27 Oct, 2014 1 commit
    • Curieux Tres's avatar
      stun: Rename a symbol to avoid a naming clash with OpenSSL · 3bc28d43
      Curieux Tres authored
      The symbol is not exported, but nevertheless leaks in the static version
      of libnice, due to limitations on symbol visibilities with static
      libraries. OpenSSL has a symbol named RAND_bytes(), which ours clashes
      with if the two are linked together statically.
      
      Avoid this by prefixing ours with ‘nice_’.
      3bc28d43
  23. 01 Sep, 2014 1 commit
  24. 18 Aug, 2014 1 commit
  25. 23 Jul, 2014 2 commits