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.
Olivier Crête [Fri, 16 Nov 2018 23:51:32 +0000 (18:51 -0500)]
component: Make incoming_checks into a GQueue
We check the size regularly, so add a little efficiency.
Tim-Philipp Müller [Fri, 14 Dec 2018 16:44:43 +0000 (16:44 +0000)]
meson: Allow building of g-i with static libs.
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.
Jakub Adam [Tue, 18 Dec 2018 13:11:04 +0000 (14:11 +0100)]
meson: Fix pkg-config generation with internal dependencies
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.
Jakub Adam [Mon, 17 Dec 2018 12:03:24 +0000 (13:03 +0100)]
meson: Fix build with fallback glib
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.
Jakub Adam [Fri, 21 Dec 2018 18:05:17 +0000 (19:05 +0100)]
agent: Fix use of freed stream in nice_agent_dispose()
nice_stream_close() calls agent_find_stream(), which iterates over
agent->streams list.
Therefore, when we're freeing agent->streams in a loop, we must also
delete the respective GSList item from the list at the end of each
iteration. Otherwise agent_find_stream() would stumble over already
deleted NiceStream instance the next time it gets called.
Fixes random crashes when running test-different-number-streams on
Windows.
Olivier Crête [Tue, 18 Dec 2018 21:38:35 +0000 (16:38 -0500)]
meson ci: Add logs to artifacts
Olivier Crête [Tue, 18 Dec 2018 20:50:56 +0000 (15:50 -0500)]
pseudotcp: Rename state enums to not clash with system ones
Jakub Adam [Tue, 18 Dec 2018 10:27:46 +0000 (11:27 +0100)]
tests: Initialize Windows Sockets where needed
Fixes failing test cases on Windows.
Jakub Adam [Tue, 18 Dec 2018 09:36:53 +0000 (10:36 +0100)]
udp-bsd: Fix recv with small buffer on Windows
The underlying GSocket implementation on Windows returns an error when
the user-provided buffer isn't large enough to fit the whole datagram
received on a message-oriented socket.
When this occurs, in order to preserve identical behavior of udp-bsd
NiceSocket across platforms, we have to mute the error and set the
received message length to the size of the provided NiceInputMessage.
Any excess portion of the message gets discarded.
Fixed udp-bsd test on Windows.
GLib 2.48 is required in order to use G_IO_ERROR_MESSAGE_TOO_LARGE.
Jakub Adam [Tue, 18 Dec 2018 09:35:15 +0000 (10:35 +0100)]
agent: Expose input_message_get_size() in agent-priv.h
Tim-Philipp Müller [Tue, 18 Dec 2018 14:43:08 +0000 (14:43 +0000)]
libnice.sym: add some generated get_type functions and fix gtk-doc build
https://gitlab.freedesktop.org/gstreamer/gst-build/issues/14
Tim-Philipp Müller [Fri, 14 Dec 2018 20:22:29 +0000 (20:22 +0000)]
meson: tests: make fullmode-with-stun non-parallel and disable fuzzing test
test-fullmode-with-stun needs to run in non-parallel mode to work.
test-pseudotcp-fuzzy sometimes just times out, which needs investigating.
meson test -C builddir --repeat=20
Tim-Philipp Müller [Fri, 14 Dec 2018 17:09:58 +0000 (17:09 +0000)]
windows: use proper fallback for ssize_t and use stdint.h for types
stdint.h is available since vs2010 and stdbool.h since vs2013,
so we should be able to just use that these days.
Nirbheek Chauhan [Fri, 23 Nov 2018 03:52:12 +0000 (09:22 +0530)]
Fix build with MSVC
Tested inside Cerbero with VS 2017
Tim-Philipp Müller [Fri, 14 Dec 2018 16:41:14 +0000 (16:41 +0000)]
meson: fix gtk-doc message
It's disabled by default, so saying it wasn't found is confusing.
Tim-Philipp Müller [Fri, 14 Dec 2018 13:47:32 +0000 (13:47 +0000)]
stun: tools: drop getopt for arg parsing for better windows compatibility
Just implement argument parsing ourselves here.
It's not really more lines of code than the getopt.h variant
and makes things build on Windows with MSVC without having to
ship a separate getopt implementation.
Tim-Philipp Müller [Wed, 21 Nov 2018 13:58:31 +0000 (13:58 +0000)]
CI: rename autotools build target
No tests are being built or run here.
Tim-Philipp Müller [Wed, 21 Nov 2018 13:56:44 +0000 (13:56 +0000)]
CI: use -werror for meson
And drop gstreamer1-plugins-base-devel dep
which is not needed.
Jordan Petridis [Wed, 21 Nov 2018 12:36:35 +0000 (14:36 +0200)]
CI: Add a meson build job
Víctor Manuel Jáquez Leal [Thu, 22 Nov 2018 10:55:51 +0000 (11:55 +0100)]
meson: disable introspection if g-ir-scanner is not found
Tim-Philipp Müller [Sat, 3 Nov 2018 00:30:01 +0000 (00:30 +0000)]
meson: add fallbacks for glib and gio
Tim-Philipp Müller [Sat, 3 Nov 2018 00:14:30 +0000 (00:14 +0000)]
meson: don't error out if clock_gettime() was not found
It's not a requirement, there's a fallback.
Tim-Philipp Müller [Sat, 3 Nov 2018 00:10:19 +0000 (00:10 +0000)]
meson: check for gtkdoc-scan
Tim-Philipp Müller [Fri, 2 Nov 2018 19:26:25 +0000 (19:26 +0000)]
meson: add new unit test
Tim-Philipp Müller [Fri, 2 Nov 2018 19:16:36 +0000 (19:16 +0000)]
meson: allow selecting crypto library manually via an option
Tim-Philipp Müller [Sun, 30 Jul 2017 15:42:52 +0000 (16:42 +0100)]
Add support for Meson build system
Jakub Adam [Fri, 14 Dec 2018 09:45:37 +0000 (10:45 +0100)]
agent: Don't require stream names to parse remote SDP
The streams are matched by the order in which they appear in the SDP,
not by name, so insisting on local streams to have one makes no sense.
This likely should have been removed in 5972db0.
Olivier Crête [Sun, 21 Oct 2018 10:01:55 +0000 (12:01 +0200)]
tcp-passive: Clear connection on child closing
If this isn't done, then there may be invalid points left inside the
passive socket which could be used and cause a crash.
Fixes #33
Jakub Adam [Tue, 20 Nov 2018 18:35:04 +0000 (19:35 +0100)]
tcp-bsd: Restore global locks
Avoids race between socket_send_more() and socket_close() leading either
to crash on use of freed NiceSocket, or abort upon attempting to
g_mutex_clear() a locked mutex.
Akin to what
d1611c0c0ba6c5bce500b96a8f61de4fe5f144e9 did to udp-turn.
Olivier Crête [Fri, 16 Nov 2018 22:34:16 +0000 (17:34 -0500)]
udp-turn: Create locked version of realm&nonce cache function
To be able to call it from a context that is already locked.
Olivier Crête [Fri, 16 Nov 2018 22:03:39 +0000 (17:03 -0500)]
udp-bsd: Protect the GSocketAddress cache with a mutex
Jakub Adam [Wed, 31 Oct 2018 00:56:39 +0000 (01:56 +0100)]
agent: check message length before extracting RFC4571 frame size
nice_socket_recv_messages() may return a NiceInputMessage of length = 0,
so before attempting to read the RFC4571 header check the message really
has at least sizeof (guint16) bytes of data.
The bug's always been there, the previous commit only made it more
apparent.
Jakub Adam [Fri, 26 Oct 2018 22:31:53 +0000 (00:31 +0200)]
udp-turn: handle multiple RFC4571 frames received in a TCP-TURN message
There might be multiple RFC4571-framed messages (or fragments thereof)
within a single TCP-TURN message. Make sure each NiceInputMessage
passed by the user into socket_recv_messages() gets exactly one RFC4571
frame, or remains empty if there aren't any messages to receive.
We should keep any data that doesn't fit into the user buffers for
the next time socket_recv_messages() gets called with the socket.
Jakub Adam [Fri, 26 Oct 2018 23:10:22 +0000 (01:10 +0200)]
udp-turn: don't re-iterate incoming TURN control messages
After being parsed, a TURN control message turns into a NiceInputMessage
with zero length. Such message doesn't increment the iteration counter i
and so is re-processed in the next iteration, which detects right away
that message->length == 0 and continues to the next element in
recv_messages.
Thus, n_valid_messages variable serves no real purpose and to achieve
the same result we can simply increment the iteration counter after each
message.
Olivier Crête [Wed, 31 Oct 2018 11:44:16 +0000 (11:44 +0000)]
udp-turn: Start function with lock instead of unlock
Olivier Crête [Sun, 28 Oct 2018 16:32:27 +0000 (16:32 +0000)]
udp-turn: Restore global locks
The socket abstraction not being reference counted, we need a global
lock for them in the short term.
Olivier Crête [Sun, 28 Oct 2018 16:11:54 +0000 (16:11 +0000)]
udp-turn: Rename misleading function, it's a timeout
It's not locked in any way.
Olivier Crête [Sun, 28 Oct 2018 16:09:55 +0000 (16:09 +0000)]
udp-turn: Factor our SendRequest destruction
Olivier Crête [Sun, 28 Oct 2018 14:46:11 +0000 (14:46 +0000)]
component: Replace agent pointer with weak reference
This should make it safer.
Olivier Crête [Sun, 28 Oct 2018 14:43:42 +0000 (14:43 +0000)]
udp-turn: Restore synchronized seconds timeout
Olivier Crête [Sun, 28 Oct 2018 13:54:45 +0000 (13:54 +0000)]
agent: Remove explicit parent pointers
Remove all pointers that don't include have a reference except to agents
Juan Navarro [Mon, 20 Aug 2018 16:01:02 +0000 (18:01 +0200)]
Use per-agent locks and GWeakRefs in callbacks from timeout sources
Work on libnice's bug #1 in Gitlab. This work is composed of multiple
merged parts:
- "Global lock contention removed"
Phabricator D1900: https://phabricator.freedesktop.org/D1900
By @nifigase
Opened in GitLab as Merge Request !12
- "agent: properly handle NiceAgent ref in callbacks from timeout
sources"
Phabricator D1898: https://phabricator.freedesktop.org/D1898
By @mparis
This patch was itself based upon a previous version of the work done in
D1900. After the switch of hosting, it got lost.
On top of these, additions to follow some review comments from @ocrete:
- https://phabricator.freedesktop.org/D1900#40412
- https://phabricator.freedesktop.org/D1898#39332
Olivier Crête [Sun, 21 Oct 2018 09:18:00 +0000 (11:18 +0200)]
component: Also accept TCP from udp-turn socket
Matthew Waters [Wed, 14 Feb 2018 12:22:16 +0000 (23:22 +1100)]
Fix build with android NDK r16
getifaddrs() may only be available if the target API is >= 24
Michael Olbrich [Mon, 9 Jul 2018 13:22:01 +0000 (15:22 +0200)]
conncheck: don't disable keepalive on TCP if it's explicitly enabled
This makes it possible to enable keepalive for TCP candidates. It is useful
to detect disappearing peers or network failures faster.
Michael Olbrich [Mon, 9 Jul 2018 13:08:15 +0000 (15:08 +0200)]
stun: check identifier before using it
By default, 'candidate_identifier == NULL' only happens for 'compatibility
== NICE_COMPATIBILITY_GOOGLE'. However, keepalive=true will also trigger
the same code path so candidate_identifier must be checked to avoid a
segfault.
Michael Olbrich [Mon, 9 Jul 2018 12:52:08 +0000 (14:52 +0200)]
agent: fix crash with debugging enabled
For some connection types nicesock->fileno is never set.
Make sure it is not NULL before using it.
Olivier Crête [Sun, 21 Oct 2018 08:02:43 +0000 (04:02 -0400)]
configure: Allow selecting crypto library manually
Brendan Shanks [Thu, 10 May 2018 00:50:13 +0000 (17:50 -0700)]
stun: Add support to detect OpenSSL
Brendan Shanks [Thu, 10 May 2018 00:18:44 +0000 (17:18 -0700)]
stun: Add implementation using OpenSSL for rand/SHA1/MD5
Brendan Shanks [Wed, 9 May 2018 19:45:22 +0000 (12:45 -0700)]
openssl: Add ax_check_openssl.m4
Olivier Crête [Sun, 21 Oct 2018 07:31:48 +0000 (03:31 -0400)]
tests: Remove non-existing mainloop test from Makefile.am
Olivier Crête [Tue, 19 Jun 2018 17:59:31 +0000 (13:59 -0400)]
Add GitLab CI configuration
Olivier Crête [Tue, 19 Jun 2018 17:58:30 +0000 (13:58 -0400)]
docs: Add missing symbols to various sections
Olivier Crête [Tue, 19 Jun 2018 17:58:05 +0000 (13:58 -0400)]
Makefile.am: Replace valgrind.sh with valgrind-test-driver
Olivier Crête [Mon, 18 Jun 2018 15:47:04 +0000 (11:47 -0400)]
Remove Phabricator .arcconfig
Now, we use GitLab at https://gitlab.freedesktop.org/libnice/libnice
Justin Kim [Wed, 13 Jun 2018 04:59:09 +0000 (13:59 +0900)]
test-bind: define MSG_NOSIGNAL if undefined
MacOS X and Windows don't have MSG_NOSIGNAL.
Signed-off-by: Justin Kim <justin.kim@collabora.com>
Nicolas Dufresne [Mon, 18 Jun 2018 12:43:17 +0000 (08:43 -0400)]
Fix queue_clear replaced by queue_free error
There was two cases where instead of freeing the queue, we actually
clear the queue so it's ready for reused. Notably in
nice_socket_free_send_queue(), a missed name function and nicesrc
element state change.
This regression was introduced by:
fa783b1dd727a6ee2b99a111ca24790ae850c2f7
Nicolas Dufresne [Sat, 26 May 2018 15:58:21 +0000 (15:58 +0000)]
Fix cast-function-type warning introduced in GCC 8
This is new warning introduced with GCC 8. This is being fixed by using appropriate function, like g_queue_free_full/g_list_free_full or by casting to GCallback before casting to the target function signature.
Closes: #46
Miguel París Díaz [Tue, 5 Jul 2016 12:42:44 +0000 (14:42 +0200)]
discovery: fix candidate foundation using valid characters
Following [1] and [2], "-" character is not allowed for foundation
Refs
[1] https://tools.ietf.org/html/rfc5245#page-73
[2] https://tools.ietf.org/html/rfc5234#appendix-B.1
Brendan Shanks [Wed, 9 May 2018 22:05:18 +0000 (15:05 -0700)]
test-pseudotcp(-fuzzy): Fix format string warnings causing build errors on 32-bit
Closes: ttps://gitlab.freedesktop.org/libnice/libnice/issues/45
Edward Hervey [Wed, 21 Feb 2018 07:49:15 +0000 (08:49 +0100)]
stun: Also rename windows-specific function
Like all other instances of nice_RAND_bytes that were renamed
to nice_RAND_nonce.
Fixes the windows build
Edward Hervey [Wed, 21 Feb 2018 08:05:45 +0000 (09:05 +0100)]
agent: Redefine socket error messages for windows
In the same way we do it for the other error messages
Olivier Crête [Fri, 4 May 2018 14:50:45 +0000 (16:50 +0200)]
stund: Pass sockaddr_storage size for both families