Set the stream as kernelized even if it couldn't be, so that we don't
keep trying.
Change-Id: Icf05c6cab2f52d918ba04e7cb2089347b3f72378
(cherry picked from commit 46e8d6c305)
(cherry picked from commit a188872838)
If SRTP/DTLS isn't yet established, do fully bail out of the kernelize
function, instead of just logging a message and blindly continuing, as
it would eventually fail due to missing or invalid SRTP parameters.
Fix-up for f2d57de078
Change-Id: I3521f54fe2001d3c67118a3502807d8cb6ada7ee
(cherry picked from commit 7ab5cf3ebf)
(cherry picked from commit 138a48029c)
We can bail right there instead of having to rely on the
`(!reti->local.family)` condition
Change-Id: I584e90dd1a705cfbe1cd3e3d849e1fa88f511448
(cherry picked from commit dbcd657908)
(cherry picked from commit 9db480f8e8)
Previously, the ports used for a monologue subscription would leak upon re-subscribe.
``__assign_stream_fds`` cleared the stream fd queue without decrementing the ref count. This
prevented ``monologue_destroy`` from releasing the ports on unsubscribe.
Closes#2125
Change-Id: Ib86290d6a35e2388e34098f2847f1e34b3db2c5d
(cherry picked from commit 250df2af5e)
(cherry picked from commit 135d648d9c)
Similar in spirit to f2d57de078, but for
the encrypt case.
Closes#2127
Change-Id: I06c82f4a1d768a863922e2240aebb6c1d243e269
(cherry picked from commit e6469c006b)
(cherry picked from commit 642a1c6833)
In case of the reverse direction of a subscription, no stream handler will be found. Previously, the
decrypt struct was left zeroed, the kernel module rejected this with ``EINVAL`` and the daemon logged:
```
[core] Failed to push relay stream to kernel: Invalid argument
```
This patch sets ``REC_NULL``/``REH_NULL`` and marks the target as non-forwarding, matching what is
expected by ``validate_srtp``.
Closes#2126
Change-Id: I5aa2b490c65e5d97dc9b2ddd24c09f9ae7b63892
(cherry picked from commit 47371520ee)
(cherry picked from commit 75ca1fe72b)
Allow invalid payload types for rejected RTP streams.
Allow empty codec store for zero-port streams.
Has some side effects on tests.
Closes#2122
Change-Id: I28c63a3e5b7309084e7899a19ff4550e8f56aac5
(cherry picked from commit 71cceeed5a)
(cherry picked from commit 4dbe2dc1db)
Currently the helper accepts 0 length, but callers actually
can try to mutate it with `- 1` what means overflowing it.
e.g. `extmap_short_is_valid_data()` has a bitwise operation
including length `(id << 4) | (ext->len - 1)`
Change-Id: I74f7fa134355059b18ba8c2b4e671c735324bdb7
(cherry picked from commit a51332f675)
(cherry picked from commit 141fb3f44a)
Currently the function has two cycles (while-outer-cycle and
for-inner-cycle).
The inner one operates on the given `pp` pointer and can potentially
mutate it (the pointer isn't const), hence the outer cycle will
continue with a mutated pointer.
Instead just use a local scope pointer to manipulate linked list's
data.
P.S.: the `pp` pointer isn't a double pointer, so unlikely was
expected (even by design) to be modified (e.g. its address or what
it actually points to).
Change-Id: Ia36bcb6fb47e9e72ae25a838f8005ca99f4c591d
(cherry picked from commit a4875c336e)
(cherry picked from commit 6c0207617a)
There seems to be a race condition with stream_fds/sockets being closed
while ICE checks are running at the same time, referencing the same
stream_fds. Solve this by holding a reference to the stream_fd in the
ICE pair object.
Additionally, add a check for a possibly closed socket when running
checks.
Closes#2113
Change-Id: I279a62d9e52cb1d409bcfda871766002aac4a758
(cherry picked from commit ceb7996cca)
(cherry picked from commit 5230107f26)
Already used by `--no-fallback`, so the rest just probably
inherited the same letter when doing copy-paste.
That is ambiguous and may cause option parsing conflicts.
Keep `F` only for the historical(most important) option
and set the rest to 0.
Change-Id: I6e4841f6e6614bfdfcf53d159130d6d676073d47
(cherry picked from commit b659b2371f)
(cherry picked from commit 807bc216de)
These are arena allocated.
Closes#2108
Change-Id: Iac29da2b3bee73c10f68854c7cb3b2010fbf4d5a
(cherry picked from commit efd96fd820)
(cherry picked from commit 17998380bd)
Skip initialisation of seq_out to a random number and track its init
state with a dedicated flag. Initialise it to the first received seq.
Change-Id: Iecdd3d28c5d6fe36d0a7488dd231767ff788942e
(cherry picked from commit 154f2b8927)
(cherry picked from commit 8b755eb47e)
Provide an extra codec-store for the lookup of the answer codec. This is
needed for codec switches during an extra answer, as the original codecs
are kept in a different codec-store.
Closes#2073
Change-Id: I7e2efc434789ecc8d3b5fcf97240e5c3f7c84652
(cherry picked from commit cfe9a588fa)
(cherry picked from commit b562f5ca47)
Instead of always blindly picking the matching supp codec for the
receiver codec, pick it only if there is no appropriate sink supp codec,
or both are compatible (which implies a payload type mismatch).
Closes#2084
Change-Id: Ie401db500a038f60f3b4286e2067f90674c611df
(cherry picked from commit 502e0b791f)
(cherry picked from commit 20c9e33d75)
This is needed to correctly print media labels for SIPREC in case the
input SDPs already had media labels.
Change-Id: I021f44ba28a3648ceb62db12425ddf545de42a96
(cherry picked from commit 9a65ab0335)
(cherry picked from commit 42270ad772)
Print information that directly matches the medias presented in the
output SDP.
Change-Id: Ib831f173c07923564158e3473f137cf867dca9bb
(cherry picked from commit b7dbc4be72)
(cherry picked from commit c5e409ff47)
The `created_from` address string includes the port, which must be
removed when substituting it for the RPC URL.
Fix-up for Ib67b57b1d
Change-Id: Iaa33ec660d21736f8b075f36479ba2734a480a4a
(cherry picked from commit db1307da8f)
(cherry picked from commit d8dd863a51)
For a repeated subscribe-request on an existing monologue, make sure
that existing media sections are re-used for the same subscriptions as
they were previously, and only create new ones in an append-only fashion
for media subs which didn't previously exist.
Change-Id: I410c6af17eb31a5c5c43c78a7f82ba867f8480b7
(cherry picked from commit c27ecf4828)
(cherry picked from commit d3f2c0c620)
Use a pointer to the arena plus a comparison test to determine whether
to ref or to dup the string, instead of a function pointer. The function
pointer alone wasn't enough as there can be multiple arenas.
Change-Id: Icd317e524fc2e5842f90d172ef7089d2cb0a5a28
(cherry picked from commit 4ea7873ca7)
(cherry picked from commit 13f82df819)
The Kamailio control module unconditionally adds the current to-tag to
the control message if rtpp-flags parsing is active. This is generally
not desirable in the case of an initial subscribe-request, as we want a
generated to-tag when the existing to-tag belongs to another dialogue.
Special-case this to ignore the included to-tag if none has been given
explicitly.
Change-Id: I1dc28bfdfd086766e0b6a117c74edd0ebb75d526