summaryrefslogtreecommitdiff
path: root/nice
Commit message (Collapse)AuthorAgeFilesLines
* address: Add introspection-friendly to_string_dupJames Westman2023-01-061-0/+1
| | | | | | nice_address_to_string expects an already-allocated string, which is not great for introspection. Adds nice_address_to_string_dup, which does the same thing, but returns a newly allocated string.
* interfaces: Add API to find the interface index from a local addressOlivier Crête2022-07-251-0/+1
| | | | | | | This will find some interface that has the address and will not work correctly if multiple interfaces have the same address. But in any case, nothing in libnice expects that and we would need to break the API to make that work.
* version: Add NICE_CHECK_VERSION to the documentationOlivier Crête2022-05-261-0/+12
|
* address: Add Boxed TypeOlivier Crête2022-05-261-0/+1
| | | | This should make the library more easily usable for bindings
* NICE_CHECK_VERSION: fix unexpected "git = next version" assumptionTim-Philipp Müller2022-05-261-3/+1
| | | | | | | | 0.1.18.1 should not satisfy a check for 0.1.19, especially not for libraries that release once a year at best. If someone needs more control they should do a feature check for the symbol in the headers or lib.
* Fix NICE_CHECK_VERSION in public installTim-Philipp Müller2022-05-262-1/+3
| | | | | | | Install a nice-version.h so that the version defines are available. https://gitlab.freedesktop.org/libnice/libnice/-/merge_requests/232
* candidate: Add utility function to get STUN server addressPhilippe Normand2022-05-091-0/+1
| | | | Can be useful to know which STUN server was used to discover the given candidate.
* Add NICE_CHECK_VERSION macroPhilippe Normand2022-05-051-0/+8
|
* candidate: Add utility function to get TURN relay addressPhilippe Normand2022-05-031-0/+1
| | | | Can be useful to know which TURN server is being used as relay server for a given candidate.
* meson: Add agent include dir to uninstalled pkgconfig fileNirbheek Chauhan2021-11-151-0/+2
| | | | | | | | Meson picks up the includedirs from the library target that it is building the pkgconfig file for. Since libnice's headers are split into the nice/ and agent/ subdirs, we need to add agent/ to include_directories: so that it's automatically added to the uninstalled pkgconfig file by Meson.
* nice: Export nice_candidate_transport_to_stringOlivier Crête2021-08-191-0/+1
| | | | Also update the Since to 0.1.19, because it's not really usable now
* nice: Export nice_candidate_type_to_stringOlivier Crête2021-08-191-0/+1
| | | | Also update the Since to 0.1.19, because it's not really usable now
* agent: implement support for RFC7675 - Consent FreshnessMatthew Waters2020-12-101-0/+1
| | | | | | | | | | | | | | | Specified in https://tools.ietf.org/html/rfc7675 RFC 7675 is a slight modification of the existing keepalive connection checks that could be enabled manually or were used with the GOOGLE compatibility mode. Slight differences from the existing keepalive connection checks include: - an additional consent expiry timer instead of relying on all binding requests to succeed. - 403: 'Forbidden' stun error-code which revokes consent with immediate effect.
* Remove autotools buildTim-Philipp Müller2020-05-222-87/+0
| | | | | | Remove dist check on the CI, since it doesn't really add anything in the Meson case (tarball is based on files checked into git and srcdir != builddir).
* agent: add nice_agent_get_sockets APIOlivier Crête2019-07-021-0/+1
| | | | | | | This API makes it possible to get an array of all of the sockets used by a specific component, this is useful to set options on the socket. Also bump GLib requirement to 2.54, which is the version in RHEL 7
* agent: add nice_agent_close_async() APIJakub Adam2019-05-091-0/+1
| | | | | Asynchronously closes resources the agent has allocated on remote servers.
* agent: trickle ICE modeJakub Adam2019-03-081-0/+1
| | | | | | | | | In this mode, activated by setting "ice-trickle" property of a NiceAgent to TRUE, a component without a successful connectivity check will wait indefinitely for more remote candidates to come. nice_agent_peer_candidate_gathering_done() must be called after receiving the last remote candidate for the component to finally change its state to NICE_COMPONENT_STATE_FAILED.
* libnice.sym: export nice_agent_new_fullJakub Adam2019-03-081-0/+1
| | | Forgotten to add in 0.1.15 release?
* meson: unify exported symbol versions with autotoolsJakub Adam2019-01-141-5/+2
| | | | | | | | | | libnice.so created by autotools has its symbols bound to the default 'Base' version node, whereas Meson build arbitrarily introduced a version node named 'libnice'. This breaks tools like dpkg-gensymbols that track changes in exported symbols through several releases of the library. Remove 'libnice' version and revert back to using unspecified version.
* meson: Fix DLL search path during test execution on WindowsJakub Adam2019-01-021-1/+2
| | | | | | | Meson needs to see all libraries a target depends on so that it can add each to PATH when running "meson test". Avoids "*.dll was not found" errors.
* Makefiles: Add meson.build files to tarballOlivier Crête2018-12-271-1/+3
|
* nice/test-symbols.sh: Make symbols test work from other path tooOlivier Crête2018-12-271-1/+1
|
* meson: Allow building of g-i with static libs.Tim-Philipp Müller2018-12-231-1/+1
| | | | | | | | Allow building of g-i with static libs which should work since Meson 0.49 and sufficiently recent gobject-introspection (>= 1.58.1). If g-i is too old people will get a suitable error message and can disable g-i via build options.
* meson: Fix pkg-config generation with internal dependenciesJakub Adam2018-12-211-3/+1
| | | | | | | | | Prevents Meson error: ERROR: requires argument not a string, library with pkgconfig-generated file or pkgconfig-dependency object, got <InternalDependency null: True> Requires Meson 0.49.
* meson: Fix build with fallback glibJakub Adam2018-12-211-1/+1
| | | | | | | | | | | When building libnice with glib fallback, its 'libgio_dep' internal dependency doesn't provide all needed include and library search paths. To avoid unresolved header files and linker errors in such case, 'libglib_dep', 'libmodule_dep' and 'libgobject_dep' from glib submodule must be pulled in as well. The problem should be fixed in GLib 2.60.
* libnice.sym: add some generated get_type functions and fix gtk-doc buildTim-Philipp Müller2018-12-181-0/+13
| | | | https://gitlab.freedesktop.org/gstreamer/gst-build/issues/14
* Fix build with MSVCNirbheek Chauhan2018-12-141-1/+3
| | | | Tested inside Cerbero with VS 2017
* meson: disable introspection if g-ir-scanner is not foundVíctor Manuel Jáquez Leal2018-12-141-1/+1
|
* meson: allow selecting crypto library manually via an optionTim-Philipp Müller2018-12-141-1/+1
|
* Add support for Meson build systemTim-Philipp Müller2018-12-144-0/+114
|
* candidate: Add equality check functionOlivier Crête2017-04-111-0/+1
| | | | | | | | | Add a function that can check if two candidates point to the same place. https://phabricator.freedesktop.org/T104 Reviewed-by: Philip Withnall <philip.withnall@collabora.co.uk> Differential Revision: https://phabricator.freedesktop.org/D1715
* stun: Switch from gcrypt to gnutlsOlivier Crête2017-04-031-1/+0
| | | | | | | GLib already uses it, instead of adding another dep. Reviewed-by: Philip Withnall <philip.withnall@collabora.co.uk> Differential Revision: https://phabricator.freedesktop.org/D1705
* stun: Add libgcrypt dependencyPhilip Withnall2017-03-311-0/+1
| | | | | | This will shortly be used to implement secure random number generation. Differential Revision: https://phabricator.freedesktop.org/D1609
* pseudotcp: Export more symbols for PseudoTCPOlivier Crête2016-06-031-0/+4
|
* agent: Add API to set local credentialsRohan Garg2015-04-141-0/+1
| | | | Adds new API: nice_agent_set_local_credentials().
* agent: Add function to retrieve the current component stateOlivier Crête2014-10-091-0/+1
|
* nice.pc: Include ${includedir} directlyOlivier Crête2014-10-081-1/+1
| | | | | | It doesn't make sense to tell applications to include <agent.h>, including <nice/agent.h> is much safer. So tell the applications to use the includedir directly.
* nice: Expose UPnP support in nice.pc.inPhilip Withnall2014-07-071-0/+1
| | | | | | | It might be useful for dependent packages to check whether libnice was compiled with UPnP support, so expose that as a variable in the pkg-config file, set to ‘true’ if supported, and the empty string otherwise.
* nice: Auto-substitute pkg-config requirements in nice.pc.inPhilip Withnall2014-07-071-5/+4
| | | | | | The requirements in the pkg-config file were outdated and incomplete. It makes a lot more sense to automatically substitute them in from the checks in configure.ac.
* address: add nice_address_equal_no_port() to compare addresses ignoring portsOlivier Crête2014-05-171-0/+1
|
* add nice_agent_forget_relays()Guillaume Desmottes2014-04-241-0/+1
|
* agent: Add nice_agent_restart_stream() to restart a single streamOlivier Crête2014-04-241-0/+1
|
* add nice_component_state_to_string()Guillaume Desmottes2014-04-231-0/+1
| | | | Nice to make debug logs more friendly to read.
* agent: Replace nice_agent_build_io_stream() with nice_agent_get_io_stream()Olivier Crête2014-01-311-1/+1
| | | | | Also made the GIOStream into a singleton, it always returns the same one. Also make it impossible to create a GIOStream for a non-existing stream/component
* agent: Add support for vectored I/O for sendsPhilip Withnall2014-01-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | Add one new public function, nice_agent_send_messages_nonblocking(), which replaces nice_agent_send_full(). This isn’t an API break, because nice_agent_send_full() hasn’t been in a release yet. The new API allows sending multiple messages in a single call, and supports vectors of buffers to transmit the messages from. The existing nice_agent_send() API has been left untouched, although it’s a bit of a bugbear because it’s non-blocking and doesn’t fit with the new *_nonblocking() naming scheme. Oh well. This doesn’t bring any notable changes to the number of memcpy()s on the critical path: it remains at zero for the common cases and common socket types. It introduces the possibility for future work to eliminate some memcpy()s in more complex socket types, like tcp-turn and tcp-bsd, but these optimisations have not been made yet. FIXME comments have been added. This includes modifications to the test-send-recv unit test to cover the new API.
* agent: Add support for vectored I/O for receivesPhilip Withnall2014-01-311-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add two new public functions: • nice_agent_recv_messages() • nice_agent_recv_messages_nonblocking() which allow receiving multiple messages in a single call, and support vectors of buffers to receive the messages into. The existing nice_agent_recv[_nonblocking]() APIs have been left untouched. This tidies up a lot of the message handling code internally, and eliminates a couple of memcpy()s. There are still a few more memcpy()s on the critical path, which could be eliminated with further work. In the reliable agent case, every message is memcpy()ed twice: once into the pseudo-TCP receive buffer, and once out of it. The copy on input could be eliminated (in the case of in-order delivery of packets) by receiving directly into the receive buffer. The copy on output can’t be eliminated except in the I/O callback case (when nice_agent_attach_recv() has been used), in which case the callback could be invoked with a pointer directly into the pseudo-TCP receive buffer. In the non-reliable agent case, zero memcpy()s are used. A couple of the more complex socket implementations (TURN and HTTP) have slow paths during setup, and partially also during normal use. These could be optimised further, and FIXME comments have been added.
* nice: Add nice_agent_build_io_stream to exported symbolsOlivier Crête2014-01-311-0/+1
|
* agent: Add a nice_agent_recv_nonblocking() functionPhilip Withnall2014-01-311-0/+1
| | | | | | | | | This is a non-blocking variant of nice_agent_recv(), and will be used internally by the GPollableInputStream implementation. External implementations may use it as well. It reserves the right to iterate the main context, but doesn’t currently do so.
* agent: Add support for GIO-style I/O streamsPhilip Withnall2014-01-311-0/+3
| | | | | | | | | | | | | | | | | | | | This adds three new classes: • NiceIOStream • NiceInputStream • NiceOutputStream which allow wrapping a single stream/component pair in an I/O stream which can be used with the standard GIO functions. The streams are constructed as wrappers around a NiceAgent, with changes to the NiceAgent’s properties affecting all instantiated streams. Streams are only supported for reliable connections. If the NiceAgent stream which underlies a NiceInputStream, NiceOutputStream or NiceIOStream is removed, the I/O stream is marked as closed. This is based on work originally done by Youness Alaoui <youness.alaoui@collabora.co.uk>.
* agent: Add a nice_agent_send_full() API exposing error informationPhilip Withnall2014-01-311-0/+1
| | | | | | | | | | | | This adds GError and GCancellable parameters to the existing nice_agent_send() API, and is identical in all other respects (notably, it is non-blocking). The GCancellable is currently unused, but could be used in future if the API grows to support blocking writes. The GError is used to return more interesting error codes than just ‘-1’.