Fabrice Bellet [Sun, 16 Jun 2019 19:04:41 +0000 (21:04 +0200)]
conncheck: fix incoming checks memory leak
Fabrice Bellet [Wed, 12 Jun 2019 19:44:48 +0000 (21:44 +0200)]
conncheck: test incoming checks on candidate base address
The candidate may be a newly discovered peer reflexive one,
or a server reflexive initial candidate, where address and
base address differ. Early incoming checks are received on
the base address. These incoming checks may accumulate if remote
credentials arrive with a delay.
Fabrice Bellet [Wed, 12 Jun 2019 13:58:41 +0000 (15:58 +0200)]
socket: fix a heap use-after-free on the send queue
Fabrice Bellet [Wed, 12 Jun 2019 13:56:02 +0000 (15:56 +0200)]
conncheck: increase dumped information in debug
In complement to the conncheck list, we dump the pair transport type,
the socket type, and the incoming checks list.
Fabrice Bellet [Wed, 12 Jun 2019 12:50:35 +0000 (14:50 +0200)]
conncheck: make oc2007r2 mode more rfc5245 friendly
Fabrice Bellet [Fri, 7 Jun 2019 21:06:04 +0000 (23:06 +0200)]
agent: more debug when remote credential are received
This complete the similar debug trace when remote candidates are
received, and help to debug our tests with the patched farstream
library, where candidates and credentials are transmitted with a
random delay.
Fabrice Bellet [Fri, 7 Jun 2019 20:55:14 +0000 (22:55 +0200)]
agent: signal when a selected pair foundation is updated
This foundation update may be needed when a selected pair contains a remote
candidate that has been found by an inbound stun request, but has not
been received by nice_agent_set_remote_candidates()
Fabrice Bellet [Fri, 7 Jun 2019 20:25:56 +0000 (22:25 +0200)]
nicesrc: fix a leak spotted by asan
Fabrice Bellet [Fri, 7 Jun 2019 20:12:52 +0000 (22:12 +0200)]
examples: fix compiler warning about uninitialized variables
Fabrice Bellet [Tue, 4 Jun 2019 17:34:22 +0000 (19:34 +0200)]
Revert "conncheck: Don't lookup prflx pair for UDP candidates"
This reverts commit
ca47519feda9d4dad38a06e2f7d94c0afc501364.
Fabrice Bellet [Sun, 9 Jun 2019 15:34:16 +0000 (17:34 +0200)]
component: Fix use-after-free and resolve regression
conn_check_prune_socket() on nsocket must be called before removing the
candidate with this socket inside the loop, to prevent the
use-after-free reported initially in issue #73.
But commit 541801d introduced a regression during discovery when an udp
turn over tcp socket is immediately closed by a HUP condition for
example. In this case, discovery_prune_socket() is never called, because
we don't have a candidate with this socket inside the loop. So the
nsocket is freed by the final nice_component_detach_socket() but is
still used by the discovery timer callback.
This commit moves the discovery_prune_socket() and
conn_check_prune_socket() actions before the loop instead of after, or
inside.
Closes #73
Fabrice Bellet [Sun, 16 Jun 2019 16:39:39 +0000 (18:39 +0200)]
agent: fix a memory leak
Fabrice Bellet [Sun, 19 May 2019 21:50:25 +0000 (23:50 +0200)]
agent: keep a ref on the agent while removal of TURN refreshes
The patch makes the agent alive at least until the last callback of
the removal of turn refreshes when a stream is deleted from the agent.
Closes #84
Fabrice Bellet [Sun, 9 Jun 2019 11:13:43 +0000 (13:13 +0200)]
discovery: fix an use-after-free in SFB user credentials
The base64 decoded username and password strings given to
stun_usage_turn_create() should not freed immediately, since they remain
used when handling the following related inbound stun replies.
Olivier Crête [Wed, 3 Jul 2019 19:17:26 +0000 (15:17 -0400)]
meson: Fix enum types generation to match automake
The automake generated ones are a little funky, so the meson one have to also be
to not break API...
Olivier Crête [Fri, 28 Jun 2019 21:03:44 +0000 (17:03 -0400)]
agent: add nice_agent_get_sockets API
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
Fabrice Bellet [Thu, 27 Jun 2019 19:52:13 +0000 (19:52 +0000)]
conncheck: add transport information to debug
Stefan Becker [Thu, 27 Jun 2019 10:33:25 +0000 (13:33 +0300)]
build: add default ignore network interface prefix
By default libnice now ignores network interfaces from virtual machines
and containers, i.e. names that start with "docker", "veth", "virbr" and
"vnet".
If you want to disable this feature override the default with
./configure --without-ignored-network-interface-prefix ...
./configure --with-ignored-network-interface-prefix= ...
meson setup -D ignored-network-interface-prefix= ...
meson setup -D ignored-network-interface-prefix=[] ...
Stefan Becker [Thu, 27 Jun 2019 09:41:06 +0000 (12:41 +0300)]
configure: support --without-ignored-network-interface-prefix
This fixes commit
b4abda09c79e4ce372a3771300abf568c85c7ff5
--without-XXX sets $withval to "no", hence we must check for this special
value instead of ignoring network interfaces that start with "no".
Stefan Becker [Thu, 27 Jun 2019 09:22:53 +0000 (12:22 +0300)]
build: make prefix option accept a list of strings
The parameter for the ignored network interface prefix build option
accepts a comma-separated string now. This list will be converted to a
comma-separated list of string literals for the C code.
Disable the feature:
./configure ...
./configure --with-ignored-network-interface-prefix= ...
meson setup -D ignored-network-interface-prefix= ...
meson setup -D ignored-network-interface-prefix=[] ...
Ignore interfaces whose names start with "virbr":
./configure --with-ignored-network-interface-prefix=virbr ...
meson setup -D ignored-network-interface-prefix=virbr ...
Ignore interfaces whose names start with "virbr" or "veth":
./configure --with-ignored-network-interface-prefix=virbr,veth ...
meson setup -D ignored-network-interface-prefix=virbr,veth ...
Stefan Becker [Thu, 27 Jun 2019 09:17:43 +0000 (12:17 +0300)]
interfaces: allow list of ignored prefixes
Improve on commit
b4abda09c79e4ce372a3771300abf568c85c7ff5
Instead of checking one prefix, check against a list of prefixes. This
allows libnice to be configured to ignore interfaces from virtual
machines and containers.
Stefan Becker [Wed, 26 Jun 2019 09:00:21 +0000 (12:00 +0300)]
interfaces: ignore non-running interfaces
Check for IFF_UP and IFF_RUNNING flags on the interface.
Stefan Becker [Wed, 26 Jun 2019 08:59:04 +0000 (11:59 +0300)]
tests: ignore trickle executables
This fixes commit
9afd0c8b8f12aa560f800ced7e50b4da40dea456
Stefan Becker [Wed, 26 Jun 2019 08:45:06 +0000 (11:45 +0300)]
interfaces: detect IPv6 ULA & link-local addresses
Update nice_interfaces_is_private_ip() to handle IPv6 too:
- unique local address block: fc00::/7
- link-local address block: fe80::/10
Stefan Becker [Wed, 26 Jun 2019 08:08:37 +0000 (11:08 +0300)]
interfaces: add missing support for IGNORED_IFACE_PREFIX
This fixes commit
b4abda09c79e4ce372a3771300abf568c85c7ff5
Copy the implementation to the !HAVE_GETIFADDRS branch too.
Stefan Becker [Wed, 26 Jun 2019 08:00:25 +0000 (11:00 +0300)]
interfaces: support multiple loopbacks
Clone implementation from HAVE_GETIFADDRS branch to !HAVE_GETIFADDRS
branch of nice_interfaces_get_local_ips()
alex [Wed, 5 Jun 2019 09:45:17 +0000 (11:45 +0200)]
Assign source out of the for loop
alex [Tue, 21 May 2019 14:19:32 +0000 (16:19 +0200)]
Fix regression introduced by https://gitlab.freedesktop.org/libnice/libnice/commit/
da41258a21102f63ec5d5b2dc20d303f772eb195. Fix #64.
Jakub Adam [Wed, 29 May 2019 18:10:40 +0000 (20:10 +0200)]
conncheck: Don't lookup prflx pair for UDP candidates
Code comment mentions peer reflexive candidate pair should be selected
only in the case of TCP local candidates, but it was done in all cases.
Seungha Yang [Mon, 20 May 2019 15:22:36 +0000 (00:22 +0900)]
meson: Fix build with MSVC and non-English locale
Otherwise, MSVC will complain and cause build error.
Olivier Crête [Fri, 10 May 2019 05:23:39 +0000 (01:23 -0400)]
Deploy documentation
Olivier Crête [Thu, 9 May 2019 18:01:07 +0000 (14:01 -0400)]
Version 0.1.16.1
Olivier Crête [Thu, 9 May 2019 17:18:13 +0000 (13:18 -0400)]
Version 0.1.16
Olivier Crête [Thu, 9 May 2019 16:44:45 +0000 (12:44 -0400)]
gst: Fix URI in plugin
Olivier Crête [Wed, 8 May 2019 20:40:10 +0000 (16:40 -0400)]
agent: Replace closed signal with GASyncResult type function
This makes the API more GIO style
Jakub Adam [Mon, 25 Feb 2019 10:30:10 +0000 (11:30 +0100)]
agent: add nice_agent_close_async() API
Asynchronously closes resources the agent has allocated on remote
servers.
Jakub Adam [Mon, 25 Feb 2019 10:23:22 +0000 (11:23 +0100)]
agent: Add "closed" signal
Jakub Adam [Tue, 19 Feb 2019 10:24:06 +0000 (11:24 +0100)]
discovery: Asynchronous removal of TURN refreshes
When deleting a turn refresh, ensure the assocaited port allocations on
the TURN server are properly removed. This means wait for a response for
our 0-lifetime refresh request and implement retransmissions. Only
delete the refresh after TURN port removal has been confirmed or all
our retransmissions timed out.
Jakub Adam [Thu, 21 Feb 2019 14:54:06 +0000 (15:54 +0100)]
component: Refactor nice_component_clean_turn_servers()
First collect the relay candidates, then dispose them in a loop.
Jakub Adam [Wed, 20 Feb 2019 15:18:54 +0000 (16:18 +0100)]
discovery: Remove unused refresh_prune_socket()
Jakub Adam [Tue, 19 Feb 2019 10:21:07 +0000 (11:21 +0100)]
agent: G_GNUC_FALLTHROUGH macro for compatibility with older glib
Andrey Skryabin [Tue, 6 Nov 2018 12:34:10 +0000 (15:34 +0300)]
conncheck: NOMINATION STUN attribute support
Attribute is proposed here: https://tools.ietf.org/html/draft-thatcher-ice-renomination-00
WebRTC supports this attribute: controlling side provides attribute value increased by one each time selected pair is changed:
https://chromium.googlesource.com/external/webrtc/+/
3c7d599750405bc734e1d5adbf1b54265b725a9d/p2p/base/p2ptransportchannel.cc#1821
illya_dudchenko [Fri, 5 Apr 2019 10:07:17 +0000 (12:07 +0200)]
Added OPENSSL_LDFLAGS
illya_dudchenko [Fri, 5 Apr 2019 09:44:29 +0000 (11:44 +0200)]
Replaced OPENSSL_CFLAGS with OPENSSL_INCLUDES
Jakub Adam [Wed, 6 Mar 2019 10:31:13 +0000 (11:31 +0100)]
component: Fix use-after-free
conn_check_prune_socket() was trying to access deleted NiceCandidate
instance. Prune the socket before removing the candidate.
Closes #73
Jakub Adam [Tue, 12 Feb 2019 14:30:22 +0000 (15:30 +0100)]
test-new-trickle: remove superfluous expression
Jakub Adam [Mon, 11 Feb 2019 16:20:01 +0000 (17:20 +0100)]
tests: enable "trickle-ice" mode
Call nice_agent_peer_candidate_gathering_done () where appropriate.
Jakub Adam [Tue, 12 Feb 2019 13:47:28 +0000 (14:47 +0100)]
test-new-trickle: prevent deadlock in dgram_process()
The STUN thread may be blocked waiting for stun_signal_ptr so signal it
when stopping the thread.
Jakub Adam [Mon, 11 Feb 2019 12:15:39 +0000 (13:15 +0100)]
tests: rename test-dribble to test-trickle
Jakub Adam [Wed, 9 Jan 2019 09:29:17 +0000 (10:29 +0100)]
agent: trickle ICE mode
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.
Jakub Adam [Mon, 11 Feb 2019 12:16:57 +0000 (13:16 +0100)]
win32: remove obsolete vs9 build files
Windows users should just use Meson for building libnice.
Jakub Adam [Wed, 16 Jan 2019 09:50:52 +0000 (10:50 +0100)]
libnice.sym: export nice_agent_new_full
Forgotten to add in 0.1.15 release?
Jakub Adam [Tue, 5 Mar 2019 17:05:56 +0000 (18:05 +0100)]
test-send-recv: Fix occasional timeouts
While waiting for write thread to finish sending, keep also receiving so
that any STUN messages from the peer still get processed.
Stefan Strogin [Fri, 15 Feb 2019 18:45:34 +0000 (20:45 +0200)]
stun: Fix LibreSSL support
Closes #71
Jakub Adam [Mon, 11 Feb 2019 16:22:58 +0000 (17:22 +0100)]
agent: don't print TURN password unless the logging is verbose
Limits accidental leakage of secret information.
Jakub Adam [Mon, 11 Feb 2019 12:26:47 +0000 (13:26 +0100)]
stunbdc: initialize Winsock API when on Windows
Olivier Crête [Tue, 22 Jan 2019 22:57:34 +0000 (17:57 -0500)]
turn: Allow lifetimes under 60s
Don't set a timeout to the very far future if the lifetime sent by the
server is under 60s. Instead of doing "lifetime - 60", switch to lifetime/2.
Jakub Adam [Mon, 28 Jan 2019 13:17:18 +0000 (14:17 +0100)]
component_io_cb: Avoid potential deadlock
Don't unref NiceAgent while holding agent mutex. If it's the last
reference, nice_agent_dispose() will try to acquire the mutex again and
deadlock.
Olivier Crête [Mon, 28 Jan 2019 22:18:42 +0000 (17:18 -0500)]
test-fullmode: Make test non-racy too
Olivier Crête [Mon, 28 Jan 2019 22:07:12 +0000 (17:07 -0500)]
test-drop-invalid: Fix raciness
Olivier Crête [Thu, 24 Jan 2019 00:22:42 +0000 (19:22 -0500)]
gitlab-ci: Move docker images to main libnice repo
Olivier Crête [Thu, 24 Jan 2019 00:12:54 +0000 (19:12 -0500)]
meson: Require very latest 0.49.1 as older versions break in our CI
Also remove workarounds for the older versions.
Olivier Crête [Fri, 4 Jan 2019 13:56:02 +0000 (08:56 -0500)]
gitlab-ci: Work around meson bug for non-POSIX utf-8 characters
Olivier Crête [Fri, 4 Jan 2019 03:02:32 +0000 (22:02 -0500)]
gitlab-ci: remove username for now because meson craps out on accents
Olivier Crête [Fri, 4 Jan 2019 00:06:28 +0000 (19:06 -0500)]
gitlab ci: Use new CentOS 7 dockerfile based containers everywhere
Olivier Crête [Thu, 3 Jan 2019 23:40:28 +0000 (18:40 -0500)]
tests: Add Dockerfiles
Olivier Crête [Tue, 22 Jan 2019 23:46:55 +0000 (18:46 -0500)]
turn: Allow alternate server error with no valid credentials
coturn doesn't authenticate us before sending us to an alternate server.
Olivier Crête [Tue, 22 Jan 2019 23:17:39 +0000 (18:17 -0500)]
stunagent: Replace more magic numbers with defines
Olivier Crête [Tue, 22 Jan 2019 23:15:28 +0000 (18:15 -0500)]
turn: Replace magic numbers with define
Jakub Adam [Wed, 16 Jan 2019 13:51:58 +0000 (14:51 +0100)]
gitlab-ci: Add gtkdoc-check log to build artifacts
Tim-Philipp Müller [Tue, 15 Jan 2019 12:26:57 +0000 (12:26 +0000)]
meson: install .pc file for static gstreamer plugin
Jakub Adam [Mon, 7 Jan 2019 09:36:14 +0000 (10:36 +0100)]
gitlab-ci: Use compiler warning level 2 in Meson build
Jakub Adam [Mon, 7 Jan 2019 09:31:25 +0000 (10:31 +0100)]
tests: Fix -Wcast-function-type warnings with GCC 8
glib documentation says G_SOURCE_FUNC() macro should be used to suppress
the warning about incompatible function types when the function will be
cast back to the correct type before it is called by the GSource.
Jakub Adam [Mon, 14 Jan 2019 09:24:12 +0000 (10:24 +0100)]
tests: Disable UPnP
An application using more than one NiceAgent instance may crash due to
a race in gUPnP.
Fix is to be released in gUPnP 1.1.2 / 1.0.4:
https://gitlab.gnome.org/GNOME/gupnp/commit/
0123e574595e0a547ce26422633df72d63d3d0e0
Jakub Adam [Mon, 14 Jan 2019 11:44:41 +0000 (12:44 +0100)]
meson: unify exported symbol versions with autotools
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.
Jakub Adam [Mon, 14 Jan 2019 18:03:38 +0000 (19:03 +0100)]
agent: Fix spelling
Errors reported by lintian -EvIL -pedantic.
Jakub Adam [Thu, 3 Jan 2019 20:26:41 +0000 (21:26 +0100)]
udp-turn: Avoid potential integer overflow
Jakub Adam [Thu, 3 Jan 2019 08:50:25 +0000 (09:50 +0100)]
udp-turn: Fix unaligned memory access on ARM
Olivier Crête [Fri, 4 Jan 2019 00:13:15 +0000 (19:13 -0500)]
gitlab-ci: Build gtk-doc and test install with meson
Olivier Crête [Thu, 3 Jan 2019 23:30:29 +0000 (18:30 -0500)]
gitlab-ci: Split make distcheck into a separate build
Olivier Crête [Thu, 3 Jan 2019 21:16:57 +0000 (16:16 -0500)]
gitlab-ci: Run autotools tests in CI too
Olivier Crête [Thu, 3 Jan 2019 20:21:33 +0000 (15:21 -0500)]
gitlab-ci: Add meson tests to build
Olivier Crête [Thu, 3 Jan 2019 20:21:23 +0000 (15:21 -0500)]
gitlab-ci: Skip meson build on schedules
Olivier Crête [Thu, 3 Jan 2019 20:12:21 +0000 (15:12 -0500)]
test-tcp: Use IPv4 instead of IPv6
This is because Docker doesn't have IPv6 by default.
Olivier Crête [Thu, 3 Jan 2019 19:58:44 +0000 (14:58 -0500)]
tests/test-different-number-streams: Make it work with only localhost
Jan Tojnar [Thu, 3 Jan 2019 13:16:47 +0000 (14:16 +0100)]
meson: fix test-gstreamer
On Nix, test-gstreamer fails with
36/38 test-gstreamer FAIL 0.07 s (exit status 1)
--- command ---
BUILT_WITH_MESON='1' /build/libnice/build/tests/nice-test-gstreamer
--- stdout ---
Running suite(s): nice_gstreamer_test
0%: Checks: 1, Failures: 1, Errors: 0
../libs/gst/check/gstcheck.c:466:F:nice:buffer_list_test:0: Could not create a 'nicesink' element
Check suite udpsink ran in 0.002s (tests failed: 1)
-------
Let’s add the build directory to GST_PLUGIN_SYSTEM_PATH_1_0, so that
the test can find the built GStreamer element.
Jakub Adam [Wed, 2 Jan 2019 11:55:02 +0000 (12:55 +0100)]
meson: Fix DLL search path during test execution on Windows
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.
Jakub Adam [Wed, 2 Jan 2019 11:53:56 +0000 (12:53 +0100)]
meson: Add fallback for openssl
Olivier Crête [Thu, 27 Dec 2018 22:54:17 +0000 (16:54 -0600)]
Version 0.1.15.1
Olivier Crête [Thu, 27 Dec 2018 21:23:09 +0000 (15:23 -0600)]
Version 0.1.15
Olivier Crête [Thu, 27 Dec 2018 22:46:19 +0000 (16:46 -0600)]
Makefiles: Add meson.build files to tarball
Olivier Crête [Thu, 27 Dec 2018 22:32:01 +0000 (16:32 -0600)]
Add more files to .gitignore
Olivier Crête [Thu, 27 Dec 2018 22:25:28 +0000 (16:25 -0600)]
Fix little bugs found by clang-analyzer
Olivier Crête [Thu, 27 Dec 2018 21:47:49 +0000 (15:47 -0600)]
docs: Add _get_type() symbols to hidden section
Olivier Crête [Thu, 27 Dec 2018 21:08:32 +0000 (15:08 -0600)]
meson.build: Sync libversion with libtool
Olivier Crête [Thu, 27 Dec 2018 20:56:38 +0000 (14:56 -0600)]
nice/test-symbols.sh: Make symbols test work from other path too
Olivier Crête [Thu, 27 Dec 2018 20:55:08 +0000 (14:55 -0600)]
Makefile.am: Export *_get_type() symbols like meson does
Jose Antonio Santos Cadenas [Fri, 29 Jan 2016 18:04:54 +0000 (19:04 +0100)]
conncheck.c: Fix negotiation problem
When a peer reflexive candidate is discovered, it is added to the
list of connection checks, but is is not nominated by default.
This causes a problem if parent pair is already nominated and
the remote peer does not send more requests because it has already
selected a candidate. (i.e.: This is the case of WebRtc in Firefox)
Olivier Crête [Sat, 17 Nov 2018 00:02:01 +0000 (19:02 -0500)]
agent: Check for early checks on dribbled candidates too
We have to check this list every time candidates are added.
Olivier Crête [Fri, 16 Nov 2018 23:56:04 +0000 (18:56 -0500)]
conncheck: Don't free all incoming checks on credentials
Candidates could also be dribbled.