agent: Expand documentation for nice_interfaces_get_ip_for_interface()
component: Fix ref leak
outputstream: Fix ref leak
conncheck: Go to connected only if the component was connected or ready

Otherwise, it claimed it was connected when the component was in the FAILED
state, when it should really have gone to connecting.
Fix bug in the ice-tcp unit test
nicesink: Block until component is writable if in reliable mode
socket: Remove dead code

At that point, (len > 0), since there are conditions above handling the
(len == 0) and (len < 0) cases, both of which break from the loop.

Coverity issue: #29325
build: Add README.win32 to EXTRA_DIST

As spotted by B Andrei on the mailing list.
stun: Fix definition of ssize_t on Windows

ssize_t should definitely be signed, not unsigned.
nicesink: Check for signal present before removing it

The signal is only connected when setting an agent, if no agent
has been set, there will be no signal.
agent: Add "keepalive-conncheck" property to make keepalives be conncheck

This is to use keepalives to check if the connection is still ongoing. If
they don't get a reply, then we can assume that the connection has died.

This needs to not happen in the case of ICE-TCP.
agent: Factor out peer reflexive priority calculation
pseudotcp: Factor out state changes and validate them

By validating state changes, we can verify that the implementation
conforms to the RFC 793 state machine at runtime. This will become more
important when FIN–ACK support is added, adding more states.
pseudotcp: Add pseudo_tcp_socket_is_closed()

New convenience API to check if the socket is in state TCP_CLOSED.
pseudotcp: Add pseudo_tcp_socket_is_closed_remotely()

New convenience API to check if the remote end of a pseudo-TCP socket
has been closed (but not necessarily the local end). This is currently a
stub implementation, but will be used fully once pseudo-TCP FIN–ACK
support lands.
pseudotcp: Fix the type of an argument to apply_option()

We’re dealing with unsigned bytes here, not chars. This will become
important when adding new TcpOptions numbered from 254 downwards.
agent: Rearchitect message handling to use GErrors for EWOULDBLOCK

Previously, an EWOULDBLOCK return value from the low-level socket calls
(including PseudoTcpSocket) would be represented by a zero number of
bytes (or messages) read by the agent. This conflicts with the use of
zero to represent end of stream (EOS) for pseudo-TCP connections, where
the sender has indicated that they are not going to send any more bytes.

So, now use GError (G_IO_ERROR_WOULD_BLOCK) to represent EWOULDBLOCK,
just like the GSocket functions. Zero is reserved exclusively for if:
 • the number of requested bytes/messages is zero; or
 • reliable mode is enabled and EOS is reached.

This does change the documented behaviour of the NiceAgent send/recv
API, but only by allowing a new behaviour (returning zero) rather than
by changing an existing one, so it should be OK.
agent: Tidy up a few variable references

This simplifies the code a little. No functional changes.
agent: Factor out common clean up code in Component

This introduces no functional changes.
agent: Ensure Component.selected_pair is cleaned when freeing candidates

When freeing candidates (component_free_socket_sources()), the sockets
which back Component.selected_pair.[local|remote] are closed and their
addresses destroyed. Component.selected_pair should be cleared as well
to allow calling code to condition on (Component.selected_pair == NULL)
to see if it’s invalid.