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)
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)
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)
Introduce three new NG protocol flags that automatically select the matching
configured rtpengine interface based on the system's routing table:
- inbound-peer=<ip>: resolves to interface for inbound (from) direction
- outbound-peer=<ip>: resolves to interface for outbound (to) direction
- peer=<ip> resolves to interface when only one interface is required
When these flags are used, the system:
- Uses a temporary UDP socket to determine the local address assigned by routing
- Finds the first configured rtpengine interface matching that local address
- Uses that interface for the media stream
This allows dynamic interface selection based on network topology without
requiring explicit interface names in the signaling.
Closes#2033
Change-Id: I211806b9cef9d028fdb689d90ea3fe627bdf5d0d
Instead of opening local sockets directly during call setup, just create
the appropriate objects first, and then open the actual sockets in a
second step.
Move the opening step down, after the bundle logic has run. This way we
can avoid opening sockets that aren't needed.
Removes an intermediate step of obtaining consecutive ports.
Change-Id: Ib94c871ed6b3a433872afd23cb1aebbd9910b33e
Gather candidates in one step, and create candidate pairings against
local sockets in a second step.
Change-Id: I85bba7fe95af14d7f77a14d5baad4ea072a83bd3
Store the current (last) used endpoint map in the media object. This can
then be directly used when port latching is requested.
Remove and close sockets from endpoint map if fewer ports are needed.
Change-Id: I58aab82f82ecc3b0a7fc7a781394c8d77e715ecf
The key for an in-kernel stream is a local port, so it is really the
socket (port) that gets pushed into the kernel, not the packet_stream.
Similar to the "confirmed" state, as we expect each socket to only have
one peer address/port.
Change-Id: I34fef771cd8b01701196ffb77e17fcd229c86550