| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
This should make the library more easily usable for bindings
|
|
|
|
| |
Can be useful to know which STUN server was used to discover the given candidate.
|
| |
|
|
|
|
| |
Can be useful to know which TURN server is being used as relay server for a given candidate.
|
|
|
|
|
|
|
|
|
|
| |
If we have gathered a host IP-address that is link-local we should
never try to use it for anything else than trying to match it with
another link-local address. Some routers seem to have problems with
traffic from link-local addresses destined at external IP-addresses.
By definition link-local addresses should stay local so there's no
reason to access STUN/TURN from it or try to form a candidate with
another address that is not link-local.
|
|
|
|
| |
It's not released yet and we don't do even/odd in this project.
|
|
|
|
| |
Also update the Since to 0.1.19, because it's not really usable now
|
|
|
|
| |
Also update the Since to 0.1.19, because it's not really usable now
|
|
|
|
| |
Avoid to use a deprecated namespace http://www.w3.org/2003/XInclude
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
This is slightly an API break, but it should never have been public.
|
| |
|
|
|
|
|
| |
Adds new public APIs, nice_candidate_type_to_string() and
nice_candidate_transport_to_string().
|
|
|
|
|
|
| |
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).
|
|
|
|
| |
The previous patch didn't get triggered
|
|
|
|
|
| |
Older gtkdoc versions expect to find a Makefile, so generate
a fake one with the information it wants.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This value is built from the position in the component turn servers
list, and from the base address network interface position in the list
of network interfaces. This value is used to ensure a unique candidate
priority for each one. Also ensure that the fields that compose the
local preference don't overlap, by checking their maximum value. See
RFC-8445, section 5.1.2.2 "Guidelines for Choosing Type and Local
Preferences".
|
|
|
|
|
|
|
| |
When passing strings to 'src_dir', they are assumed to be relative to
the root source dir of main project. That's possibly a Meson bug, it
should be relative to current source dir. In any case, it's better to
use include_directories() to avoid any confusion.
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
| |
Asynchronously closes resources the agent has allocated on remote
servers.
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
We depend on GLib 2.36.0, which deprecated g_type_init() since GType
initialisation is now done automatically.
Reviewed-by: Olivier Crête <olivier.crete@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D296
|
|
|
|
|
|
|
|
| |
There is no point in the NiceComponents having a state machine if the
state transition graph is not documented or enforced. Document and
enforce it.
http://phabricator.freedesktop.org/T120
|
|
|
|
| |
Adds new API: nice_agent_set_local_credentials().
|
|
|
|
| |
Now that they pass, we should endeavour to ensure they continue to pass.
|
|
|
|
| |
This should have been included before. This fixes `make check` in docs/.
|
|
|
|
|
| |
This straightens out the last few bits of the documentation and almost
allows `make check` to pass in docs/.
|
|
|
|
| |
This allows it to order the index a little better.
|
|
|
|
|
| |
We already used XML everywhere; just formally switch to XML mode and
eliminate the last few traces of SGML.
|
| |
|
|
|
|
|
| |
This is analogous to the UNIX shutdown() function, allowing either or
both sides of a pseudo-TCP connection to be shut down.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In order to detect cases where the peer closes its connection without an
explicit in-band close message (e.g. in protocols such as Telnet where
there is none), pseudo-TCP needs to grow support for a shutdown
handshake, following the TCP FIN–ACK specification. Arguably it should
have had this all along, but Jingle apparently doesn’t need it.
This adds support for FIN–ACK to the pseudo-TCP implementation. It is
backwards-compatible, only being used if the TCP_OPT_FIN_ACK option is
specified in the SYN segment.
If enabled, full-duplex closes are supported, and the standard method
for notifying a peer of the other end closing its connection (returning
0 from recv()) is used.
Also allow rapidly tearing down a connection, discarding unsent and
unreceived data, by sending an RST segment. This preserves the ability to
do a forced socket closure with pseudo_tcp_socket_close(sock, TRUE).
It also permits graceful socket shutdown in the case where the final ACK
is lost, and one peer gets stuck in the LAST-ACK state: that peer will
eventually re-transmit its FIN segment. The other peer, in the CLOSED
state, will respond with a RST segment, and the first peer will then
reach CLOSED.
References (most useful first):
• http://tools.ietf.org/html/rfc793#section-3.5
• http://tools.ietf.org/html/rfc1122#page-87
• http://vincent.bernat.im/en/blog/2014-tcp-time-wait-state-linux.html
• http://tools.ietf.org/html/rfc675
Diagram:
•
http://en.wikipedia.org/wiki/Transmission_Control_Protocol#mediaviewer/File:TCP_CLOSE.svg
|
|
|
|
|
|
|
|
|
|
| |
This is needed for the upcoming new test suite for pseudo-TCP. It
shouldn’t be used in normal code — only in tests.
Ideally, the pseudo-TCP code should originally never have called
g_get_monotonic_time() itself, and should have always taken a time
parameter from the caller; then it would be more testable.
Unfortunately, API guarantees prevent this from being changed now.
|
|
|
|
| |
New convenience API to check if the socket is in state TCP_CLOSED.
|
| |
|
| |
|