- 02 Nov, 2021 6 commits
-
-
Olivier Crête authored
-
Olivier Crête authored
-
Olivier Crête authored
Remove duplicated calls to dependency() so we can have fallback in all cases.
-
Olivier Crête authored
This is a fix over the recent fix in commit 574f44b4
-
Olivier Crête authored
-
Olivier Crête authored
-
- 01 Nov, 2021 4 commits
-
-
Fabrice Bellet authored
This patch ensures that related succeeded-discovered pairs change to state failed simultaneously, to avoid leaving dangling pointers if one is freeed while the other is still in the conncheck list. Such transition is very rare, and only occurs in regular nomination mode, when the network conditions change between the time the pair is initially discovered and the time it is rechecked with the use-candidate flag.
-
Xavier Claessens authored
In that case crypto_dep is a list and we can't call .found() method.
-
Juan Navarro authored
Instead of having 3 independent implementations, make the simpler versions delegate into the full one. The simplest constructor needs to pass "no option", for which no constant exists in the NiceAgentOption enum. Thus the new NICE_AGENT_OPTION_NONE constant is added to reflect this possibility.
-
Ole André Vadla Ravnås authored
As we only need a few primitives there isn't much OS-specific code needed, and for applications that don't already depend on OpenSSL or GnuTLS it simplifies the build process quite a lot. Note that we use the vintage WinCrypt APIs as the Cryptography Next Generation APIs are only available on Vista and newer.
-
- 04 Oct, 2021 1 commit
-
-
Fabrice Bellet authored
The stun agent may contain references to the password previously stored in some remote candidates, freeed by nice_component_restart(), that were used by keep-alive stun requests. These stun replies may arrive later after ice has been restarted. Since the remote candidates are freeed when ice is restarted, the stun agent must be reset to get rid of these related references.
-
- 01 Oct, 2021 2 commits
-
-
Olivier Crête authored
-
Olivier Crête authored
-
- 19 Aug, 2021 3 commits
-
-
Olivier Crête authored
It's not released yet and we don't do even/odd in this project.
-
Olivier Crête authored
Also update the Since to 0.1.19, because it's not really usable now
-
Olivier Crête authored
Also update the Since to 0.1.19, because it's not really usable now
-
- 21 Jul, 2021 1 commit
-
-
abhijeetbhagat authored
Add the relevant ifdef extern C bits
-
- 20 Jul, 2021 6 commits
-
-
Olivier Crête authored
The component can go from any state to FAILED, so simplify that and make it explicit.
-
Olivier Crête authored
When doing a ICE restart, which can be done from any state, we can always go back into the gathering state. This fixes a regression introduced by b20ac5ba
-
Olivier Crête authored
It just won't work for now.
-
Olivier Crête authored
Getting it from the upstream mirror seems to fail miserably
-
Olivier Crête authored
-
Olivier Crête authored
-
- 13 May, 2021 2 commits
-
-
Fabrice Bellet authored
-
Fabrice Bellet authored
-
- 11 May, 2021 1 commit
-
-
Ole André Vadla Ravnås authored
-
- 10 May, 2021 1 commit
-
-
Ole André Vadla Ravnås authored
To be consistent with what we do for ICE-TCP.
-
- 09 May, 2021 1 commit
-
-
Ole André Vadla Ravnås authored
-
- 03 May, 2021 4 commits
-
-
Olivier Crête authored
The type is already checked to not be peer reflexive earlier.
-
Olivier Crête authored
Even if the agent is invalid, don't leak. This makes coverity a little happier.
-
Olivier Crête authored
This should make Coverity's job a little easier. And also fix a little leak in the error path.
-
Olivier Crête authored
As removing the request from the queue looks into the SendRequest, one needs to unqueue it before freeing it.
-
- 20 Apr, 2021 8 commits
-
-
Fabrice Bellet authored
With this patch we free all outstanding refreshes when the agent dispose method is called, even those that are in the way to be discarded asynchronously, when a stream is removed. We also make the final user callback of the refresh proces synchronous, so we don't have to deal with an heap use-after-free problem. This also requires to order some parts of code.
-
Fabrice Bellet authored
Asynchronous refreshes pruning may occur when the agent async close function is called, but also when a stream is closed. A flag 'discarding' is used in the CandidateRefresh object to determine if a refresh is already on the way to be asynchronously freed. A refresh definitely freed is removed from agent refresh_list. When the agent async close function is called, it is passed a user callback that will be invoked when all refreshes have been freed. This is not exactly how things work currently, because right now, the callback function is also invoked when all CandidateRefresh objects have the discarding flag set, with the test 'data->items_to_free==0'. In that case, clearly not all refreshes have been freed, as some are still there in the refresh_list with the discarding flag set. This is probably not what the user expects from the function nice_agent_close_async(), where the callback is supposed to be invoked after all refreshes have been freed: and including those asynchronously pruned by nice_prune_stream_async(). This patch adds a supplementary timeout when closing the agent async, that waits until the agent refresh list becomes empty.
-
Fabrice Bellet authored
We keep refreshes having the discarding flag set. They may be freed later if the agent main context remains alive after agent deletion.
-
Fabrice Bellet authored
This patch suggests the developer to close its alive reservations on the turn server before disposing the agent. Not removing reservations on the turn server, will make them alive until their default timeout, generally 300 seconds, which is not fair for the turn server resources, but also it may cause a fatal error 437, "Mismatched allocation: wrong transaction ID", when another agent tries to contact the same turn server using the same nat mapping before this delay expires.
-
Olivier Crête authored
The reason is that the component object could have been destroyed in the mean time.
-
Fabrice Bellet authored
-
Fabrice Bellet authored
-
Fabrice Bellet authored
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.
-