| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
| |
The reason is that the component object could have been destroyed in the
mean time.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Refreshes with zero lifetime sent over tcp transport may cause the
removal of the underlying socket when the remote peer closes the
connection taking our request into account. These refreshes must be
tracked and freeed on our side to avoid retransmission attempt on a
closed socket and a heap-use-after-free error in that case.
|
|
|
|
| |
Including unused utun devices.
|
|
|
|
| |
Including unused utun devices.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
The remote credentials recorded in the streams should be reset,
in the case the restarted conncheck begins with new remote candidates
*before* the updated remote credentials are received.
|
|
|
|
|
|
| |
The state of the component is downgraded to gathering state, so it can
really restart a new conncheck from scratch. It'll transition to state
connecting when receiving the updated remote candidates.
|
|
|
|
|
| |
Ice restart must not change the role of the agents since RFC8445,
section 9, "ICE Restarts".
|
| |
|
|
|
|
|
|
|
| |
gst-build uses meson introspection and reads the plugins array of each
subproject in order to locate the plugins. Setting libnice plugins array allow
enabling nice plugin in both gst-env.py and when building single library
libgstreamer-full.so.
|
|
|
|
|
|
| |
Android now spits other address types too confusing libnice.
This patch is a collaborative work with Tom Gilbert <twcgilbert@gmail.com>
|
| |
|
| |
|
|
|
|
| |
Avoid to use a deprecated namespace http://www.w3.org/2003/XInclude
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Peer-reflexive candidates are not supposed to be set by the application,
since they are not exchanged in the SDP.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
According to the RFC, the base address of a relayed candidate is that
candidate itself. This precision is interesting and not just
anecdotical, since it allows the relayed candidates from the same turn
server to share the same foundation, and to not be tested concurrently.
However, since the base address in its current form is required to
compute a unique priority, we choose the keep the
candidate->base_address for this purpose, and to apply the RFC
consequence about relay candidate base being equal to the candidate
itself in the foundation assignment instead.
|
|
|
|
|
| |
When a redundant relay candidate is discarded, a turn refresh with zero
lifetime must be sent to release its allocation on the turn server.
|
|
|
|
|
| |
When dropping redundant server-reflexive and relay candidates, they
should of course have the same transport too.
|
|
|
|
|
|
|
|
|
|
|
|
| |
The rationale with this patch is that an agent running on a multihomed
host have no gain to store multiple identical server reflexive and relay
local candidates (those obtained by a stun bind request sent from each
local interface). The stun requests that use the same default route are
all expected to provide the same answer.
This patch should keep intact the ICE conncheck versatility, and
drastically improve the conncheck time to completion, as the number of
checked pairs is reduced.
|
|
|
|
|
|
| |
We handle interfaces of type AF_INET or AF_INET6 only, so discard other
families before calling sockaddr_to_string() on them, for example
PF_PACKET.
|
|
|
|
|
| |
This patch avoids to bypass state gathering, with transition
from disconnected to connecting.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
Just put a much larger buffer for this to work.
Fixes #126
|
|
|
|
|
|
|
| |
The previous patch handling tcp disconnections forgot a case when the
selected pair is removed, while in state ready, and in that situation,
we should not jump back to connecting state, but fail instead. Just like
we did at the beginning of the function.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch fixes cases, where the range is full, some ports fail with
HOST_CANDIDATE_CANT_CREATE_SOCKET, other fail with
HOST_CANDIDATE_DUPLICATE_PORT, the value of res we keep when leaving the
loop is randomly the one of the last iteration of the loop.
CANT_CREATE_SOCKET still happens when trying to create an udp bsd socket
with the same address and port than one of another component, so it is
also a case of duplicate port in fact.
To be homogeneous, we add a gerror for nice_udp_bsd_socket_new(), like
we did in nice_tcp_passive_socket_new(), and we can catch the same
G_IO_ERROR_ADDRESS_IN_USE there too, when failing to get free available
udp ports.
This patch is a complement to merge request !158
|
|
|
|
|
|
|
|
|
| |
With this patch, we handle tcp disconnections in a more robust way.
Such disconnections cause the underlying socket to be detached, and
various related pairs have to be discarded from the conncheck list.
This may cause unexpected behaviour, like a previously connected
component to come back in state connecting, if the selected pair
is concerned by a tcp disconnection for example.
|
|
|
|
| |
This was introduced recently and flagged by Coverity.
|
| |
|
|
|
|
| |
The keyring in our base image is outdated.
|
| |
|
| |
|
|
|
|
|
|
| |
Also don't fail the first iteration of upgrade
Solution found by Jordan Petritis
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
This should make it work even if no remote candidates at all are set
in the case where we can establish a connection based only on peer reflexive
candidates.
|
|
|
|
| |
Also rewrite the logic a little, and try to make the code a little clearer.
|