1. 05 Sep, 2017 1 commit
  2. 21 Jun, 2017 5 commits
  3. 12 Jun, 2017 2 commits
    • Fabrice Bellet's avatar
      conncheck: implement ice regular nomination method · 0636f9ad
      Fabrice Bellet authored
      This patch implements Regular Nomation as described in RFC5245
      8.1.1.1. The controlling agent lets valid pairs accumulate, and
      decides which pair to recheck with the use-candidate attribute set.
      priv_mark_pair_nominated() follows 7.2.1.5, to update the nominated
      pair when acting as a STUN server, and
      priv_map_reply_to_conn_check_request() implements 7.1.3.2.4 to
      update the nominated pair when acting as a STUN client. A new
      property is also added to the agent to control the nomination
      mode, which can be regular of aggressive, with default value
      set to aggressive.
      
      Two new flags are introduced in the CandidateCheckPair structure:
      
      - use_candidate_on_next_check indicates the STUN client to add the
        use-candidate attribute when the pair will be checked. At this
        time, the nominated flag has not been set on this pair yet.
      
      - mark_nominated_on_response_arrival indicates the STUN server
        to nominate the pair when its succesfull response to a
        previous triggered check will arrive (7.2.1.5, item #2)
      
      Differential Revision: https://phabricator.freedesktop.org/D811
      0636f9ad
    • 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
  4. 08 Jun, 2017 1 commit
  5. 31 May, 2017 1 commit
  6. 28 May, 2017 2 commits
    • Fabrice Bellet's avatar
      agent: add new pairs only for gathering streams · 14b2f2d9
      Fabrice Bellet authored
      At the end of the local candidate gathering process, we only create new
      pairs for streams that are in gathering state.
      
      Other stream that may be in ready state for example, due to a
      previously succeeded conncheck process, may have accumulated some
      couples (local,remote) candidates that have not resulted in the creation
      a new pair during this previous conncheck process, and we don't want
      these new pairs to be added now, because it would generate unneeded
      transition changes for a stream unconcerned by this gathering.
      14b2f2d9
    • Fabrice Bellet's avatar
      conncheck: implement ice regular nomination method · 07bbffd0
      Fabrice Bellet authored
      This patch implements Regular Nomation as described in RFC5245
      8.1.1.1. The controlling agent lets valid pairs accumulate, and
      decides which pair to recheck with the use-candidate attribute set.
      priv_mark_pair_nominated() follows 7.2.1.5, to update the nominated
      pair when acting as a STUN server, and
      priv_map_reply_to_conn_check_request() implements 7.1.3.2.4 to
      update the nominated pair when acting as a STUN client. A new
      property is also added to the agent to control the nomination
      mode, which can be regular of aggressive, with default value
      set to aggressive.
      
      Two new flags are introduced in the CandidateCheckPair structure:
      
      - use_candidate_on_next_check indicates the STUN client to add the
        use-candidate attribute when the pair will be checked. At this
        time, the nominated flag has not been set on this pair yet.
      
      - mark_nominated_on_response_arrival indicates the STUN server
        to nominate the pair when its succesfull response to a
        previous triggered check will arrive (7.2.1.5, item #2)
      
      Differential Revision: https://phabricator.freedesktop.org/D811
      07bbffd0
  7. 11 Apr, 2017 2 commits
  8. 04 Apr, 2017 5 commits
  9. 03 Apr, 2017 4 commits
  10. 26 Oct, 2016 2 commits
  11. 21 Jun, 2016 2 commits
  12. 20 Jun, 2016 1 commit
    • Fabrice Bellet's avatar
      agent: rework gathering failures on auto-generated IPs · 8f74fa48
      Fabrice Bellet authored
      This patch reworks commit fc4d3aab "ignore gathering failures on
      auto-generated IPs", that introduces a regression in the test-fullmode
      check, when turn is on and use_loopback is off. The part of the test
      that fails is when nice_agent_gather_candidates (ragent...) should
      return false when the port range for the second component is already
      busy, line 385.
      
      In this case, agent->local_address is null, so the code path added by
      commit fc4d3aab is taken, and the function will return true, even when
      not local address has been gathered.
      
      The proper fix is to swap the inner and outer loops (on components, and
      on local addresses), and to go to error when all local addresses of a
      given component have failed, and to return false only in this case.
      8f74fa48
  13. 06 Jun, 2016 4 commits
  14. 03 Jun, 2016 3 commits
    • Olivier Crête's avatar
      f7140f07
    • Philip Withnall's avatar
      agent: Port PseudoTcpSocket to GDatagramBased · 39c481ea
      Philip Withnall authored
      Including porting the tests.
      
      WIP: Still needs testing and documenting.
      
      tests: Port test-pseudotcp to GTest and add additional tests
      
      WIP work to rebase PseudoTcpSocket from GCommunicable to GIOStream
      
      WIP update for GDatagramBased API changes
      39c481ea
    • Olivier Crête's avatar
      SPECIFIC: Allow creating a GIOStream with a non-reliable agent · 418bfbcb
      Olivier Crête authored
      Only usable with the patches from
      https://bugzilla.gnome.org/show_bug.cgi?id=697907
      
      SPECIFIC: agent: Fix GSource dispatches for UDP NiceOutputStreams
      
      The GSource created by g_pollable_output_stream_create_source() on a
      NiceOutputStream would never have been dispatched, due to not having any
      poll events (or anything else); it only works for TCP streams because of
      a GCancellable child source which is triggered by the TCP code.
      
      Fix that by making ComponentSource suitable for G_IO_IN and G_IO_OUT
      again, and adding that as a child source for UDP output stream GSources.
      
      agent: SPECIFIC: Drop support for reliable streams
      
      libnice should not be implementing pseudo-TCP support internally — it
      should provide the PseudoTcpSocket as a separate API which user code can
      use if it needs. If this were to be upstreamed, a deprecation path would
      have to be written, continuing to support the old API. However, that
      would take too long, so this commit just rips it all out.
      
      This commit *must not* be upstreamed.
      
      https://phabricator.collabora.co.uk/T447
      
      agent: Add nice_agent_get_socket() to return a GDatagramBased
      
      TODO: Needs documentation and testing.
      
      This bumps the GLib dependency to 2.46 for GDatagramBased.
      
      agent: Remove nice_agent_get_io_stream()
      
      It has been replaced by nice_agent_get_socket().
      
      TODO: This needs documenting and testing.
      
      TODO: This should *not* go upstream without turning it into a
      deprecation-fest.
      418bfbcb
  15. 02 Jun, 2016 1 commit
  16. 31 May, 2016 2 commits
  17. 30 May, 2016 2 commits