For tagged attributes using a `a=name:tag value` format, extend pattern
matching so that just `name` matches as well as `name:tag`. Only support
this for removal (not substitution) as these attributes generally can
appear multiple times, and doing a static substitution on all of them is
kinda pointless.
Change-Id: I07c7f6e9075e862902bffe679d5de8618162eb8f
As we don't directly append to an existing GString any more anyway,
simplify the function signature by just returning a new GString if the
format string is known.
Change-Id: I9f8e6fbd93ea063eecb519cd57366effd4022f75
For attributes that have a value, consider both the full attribute
string `a=name:value` and just the attribute name itself `a=name` when
checking for removal and substitution instructions.
Change-Id: Ia648a4db8c80a5c23abf44f75b45e29acdf1b91d
With attributes names separated from their values, we can implicitly add
the separator ':' instead of having to include it in the attribute name.
Change-Id: Ie47aa5b76aa3261f4171707f88a203c911536ede
Where the attribute name is known, only pass the name itself as "name"
and pass the rest as "value" for clearer indication of what is what.
Change-Id: I564ce894b1d14b1acfd1f1b351ad2a316688a714
Some source strings are `const char *` and we don't have an alternative
`str` type pointing to a const buffer. Strictly speaking some buffers
aren't even char buffers, yet we use the `str` type to manage them. This
eliminates the need to explicitly cast every usage.
Change-Id: Ifd3cdd3d400fc483e6c488a95e9381938e63cc7f
We're in control of all the source strings, so we can just mandate not to
include the leading a= in the string.
Change-Id: If977e97bacc770de140b7ec69b48be8afaab7a0a
Only the legacy protocols (which hardly anyone uses) don't pass a
`flags` object to the offer/answer functions. Make them also pass a
dummy `flags` object so that all the non-null checks become redundant
and can be removed.
Change-Id: Id2ec76ba307ad80958168a3a42e5679687765e22
Handle the `output-destination` flag in the same way as the `metadata`
flag, eliminating the need to do it explicitly everywhere it's relevant.
Add a few alternative spellings of `output-destination`.
Rename the member from flags to `recording_file` to make it more clear
what it is.
Add save/restore capabilities of that field to the Redis code.
Unify printing of monologue LABEL into the same function that handles
the metadata.
Update documentation to better explain this option, and use the new
clearer name.
Change-Id: I4496341013b0ccab5b1dec026cf3a1a0ea879018
Use a generic function to update call/monologue fields from a given
string, and print an update to the recording metafile.
Functional no-op.
Change-Id: I23dbfff0646145809c37ee9270bce6983b136dcc
Move the code generating the recording metafile prefix out of the
"externally" visible code and logically deeper into recording.c.
Move the field from the recording struct into the call struct so that it
can be directly restored from Redis, and eliminate and mostly unused
function argument in the process.
Functional no-op.
Change-Id: I31eb3cd5864dd8138fabad0bcbd08ef18571f1a9
Switch the start/stop/etc recording methods to parse out the full
message dictionary into a sdp_ng_flags like all other methods, and then
pass the sdp_ng_flags object to update_metadata_*() for a unified
recording setup function.
Functional no-op.
Change-Id: Iad1004981808c45973bfd9bc2dc6c461acc602cc
Graphite isn't able to deal with spaces in the metric names delivered to
it. Introduce special version of the command strings with spaces
replaced by underscores.
closes#1780
Change-Id: Ie8bcec5ca4f2d427e92901f6fa76b985df6e459e
Add an alphabet ordering for
parsing flags in the following functions:
- `call_ng_flags_rtcp_mux()`
- `call_ng_flags_replace()`
- `call_ng_flags_flags()`
- `call_ng_codec_flags()`
- `call_ng_parse_block_mode()`
- `call_ng_main_flags()`
Change-Id: I72a8191d500230386a474b1872ec798c67c97a9f
In the file implementations follow the rules:
1. Firstly goes the correlated header file, then one empty row.
2. Secondly go system headers, so in angle-brackets, then one empty row.
3. Thirdly, go custom header files, so in double quotes,
then one empty row.
4. If there is "xt_RTPENGINE.h", it's mentioned next, but separately,
then one empty row.
5. If there are pre-processor definitions, they are added.
6. And eventually at least one empty row before the code.
In some situations it's allowed to step aside from the rules,
when inclusions are dependent on each other, so on the sequence,
and also possibly on some inline objects definitions, but if possible
to follow the rules, it's being done.
Change-Id: Ie512a970e230fe202398656d1942e8874bb14cd9
Instead of using transcoding flag `_TRANSCODING`
on the monologue level, we have to use that on the media
level in order to properly reflect the level on which
transocding is being used, and also to be able to selectively
set this for specific media sessions.
Change-Id: I9a25dc7be24f80b2b6ada816448a67933c762d86
Sinks must be a list of medias, not monologues.
Refactor `call_block_silence_media()`.
Additionally: deprecate the `call_media_subscribed_to_monologue()`
because of no use.
Change-Id: Iafa4fc87d613948b84373985711e8cebfa48fad8
gcc <12 propagates the const-ness of the given value to the newly
declared variable with __auto_type, leading to silly "can't assign to
const variable" errors. Work around this with an ugly macro.
Change-Id: Ic952c094c24bd802379fc10ad19d559613b2c1d0
There's two flavours of this struct being in use, even though the
structs' signatures are the same. One contains socket_t objects, the
other contains stream_fd objects. Separate them out and be explicit
about which is which.
Change-Id: I5ef1d154cc442528149f69be2e6a02625a6c650d
Stop handling redundant media subscribing in the:
- `call_get_monologue_new()`
- `call_get_dialogue()`
and leave this work only for the offer/answer model:
- `monologue_offer_answer()`
In the meanwhile the subscribe request/answer model
keeps on using directly the:
- `__add_media_subscription()`
Change-Id: I6cfaef634b8b9e5e805df25f1c6f80225648b75a
Allow codec_tracker_update to reference an existing codec_store. Then
when a supplemental codec type needs to be generated, make it look up
the type in the existing codec_store and re-use the existing payload
type if present instead of creating a new one. This allows payload type
numbers to remain unchanged during a re-invite.
Change-Id: I9e5edd897515a5e3eb5033aa6bbf21c8667d6133
During an offer, we update the codecs from the given list not only on
the side of the offerer, but also on the answerer's side, in order to
perform the codec answer routine during the answer phase. While doing
this, we empty out the existing list of codecs (on both sides) and
repopulate it fresh from the given list.
This can cause problems during a reverse re-invite, when the list of
codecs on the answerer's side already contained the codecs that had been
offered before. When setting up the new re-invite offer, we want to
retain codecs (and their payload types and format parameters) that were
already in place, instead of recreating a new list from scratch.
Improve this by adding a `merge_cs` option to the populating functions,
which points back to the stream_params codec_store. Codecs that would
have been removed from the codec_store during the repopulation are then
moved back into the stream_params codec_store instead. This then allows
the functions adding new codecs to the list (offer/transcode) to
reference these codecs that were previously in place, and so they can be
added back with the same options as they had existed before, instead of
recreating them from scratch.
Change-Id: I53e7ab10e9144a308a5c36be5ebfddd73c212f06
In case of repeated answers without additional offer in between, we
shouldn't reset the codec tracker status at the end of the codec answer
routine, so that we end up with the same state during the next answer.
Change-Id: I54f6136cc5684473553b4862c13ea9f4a3dcfe99
*** CID 1570963: Null pointer dereferences (REVERSE_INULL)
/daemon/call.c: 3553 in monologue_subscribe_answer()
3547 /* set src_media based on subscription (assuming it is one-to-one) */
3548 struct call_media * dst_media = __get_media(dst_ml, sp, flags, 0);
3549 GList * src_ml_media_it = dst_media->media_subscriptions.head;
3550 struct media_subscription * ms = src_ml_media_it->data;
3551 struct call_media * src_media = ms->media;
3552
>>> CID 1570963: Null pointer dereferences (REVERSE_INULL)
>>> Null-checking "dst_media" suggests that it may be null, but it has already been dereferenced on all paths leading to the check.
3553 if (!dst_media || !src_media)
3554 continue;
3555
3556 /* additional attributes to be carried for `sdp_create()` */
3557 if (print_extra_sess_attrs && !g_queue_find(&attr_mls, ms->monologue)) {
3558 sdp_copy_session_attributes(ms->monologue, dst_ml);
Change-Id: I391b95f61237e5a7af206b0568a1cf421dcbb8f8
From now on the `call_subscription` concept gets
deprecated, and instead of it the `media_subscriptions`
concept gets applied.
Benefits of this change is:
- ability to subscribe one-to-multiple medias (different monologues)
- media level manipulations, without affecting whole SDP session
- no need to use medias offset, to detect proper subscription's media
- there is no need of particular medias order, they can be
subscribed to each other in any possible way
(even though RFC still requires to always have proper ordering)
Deprecated objects:
- `struct call_subscription`
- `GQueue subscriptions`
- `GQueue subscribers`
- `GHashTable * subscriptions_ht`
- `GHashTable * subscribers_ht`
Deprecated functionality:
- `__unsubscribe_one()`
- `__unsubscribe_all_offer_answer_subscribers()`
- `__unsubscribe_from_all()`
- `__subscribe_offer_answer_both_ways()`
- `__add_subscription()`
- `__unsubscribe_one_link()`
- `call_get_call_subscription()`
- `call_subscriptions_clear()`
- `call_subscriptions_free()`
Offtopic: additionally this commit adds helper func:
- `call_media_subscribed_to_monologue()`
Change-Id: Ifb44f7a1ba5b483b1472882b1b8d06444dba1727
Rework the `set_monologue_flags_per_subscribers()` to work on medias
instead of working on monologues and refactor according code
appealing to this func.
Also to reflect the sense of this function better, change naming
from: `set_monologue_flags_per_subscribers()`
to: `media_update_transcoding_flag()`
Change-Id: I517ea13c91240d8fb9d3608edee16f132f4f61e1
Rework the `__update_init_subscribers()` so, that it takes:
- `call_media`
- `stream_params`
directly for processing, instead of operating on the whole ml.
Therefore also refactored code that appeals to the concerned func.
Change-Id: I56a9c6aa54b17d8c8dede2181414c481ca0cf2ca
During the `monologues_intact` stage of the `call_get_monologue_new()`
use media subscription in order to:
- update `os` ml, if still not set before
- update subscription ml's tag with totag, if not set before
After the first possible subscription's `offer/answer` ml
has been found and all work done, break cycling expecting
that this is one-to-one (so offer/answer) model, where only
medias of two monologues are involved.
Change-Id: I8b06cee2090563da4ce4c290ab3c0b9ce8c7ab3f
Rework the logic of fromtag monologue detection in the
`call_get_dialogue()`.
Fristly, try to match using given from tag (if there is one).
Secondly, try to match using given viabranch.
Thirdly, try to use top-most subscription of the top-most
media related to the totag monologue (newer behavior).
Fourthly, if still not found just create a brand-new one.
This change relates to the fact, that we stop using call monologue
subscriptions model and switch to the media based one.
Change-Id: I106bdd79f5e4754f76bd048f51c8fc211ee57410
Due to introduction of media subscriptions model.
Rely on subscription monologue's empty tag,
while trying to detect, whether or not to destroy given monologue
but with a clause that:
- this ml is subscribed to medias of other signle ml
It's important to keep this check because
if the `delete` is done with from-tag and to-tag,
just right away after an `offer` without the to-tag
and without use of via-branch, then the call's data
can potentially remain dangling without being deleted completely.
So looking up the offer side of the call through the from-tag
and then checking, if the call has not been answered
(answer side has an empty to-tag), gives a clue whether
to delete an entire call.
Additionally, introduce a helper function:
- `ml_medias_subscribed_to_single_ml()`
which checks, whether this monologue medias are subscribed
to a single other monologue medias.
Change-Id: I2474d24ac66ce2cb12bd282f2c0df809fce7880c
From now on, the newer media subscriptions based concept has been
introduced, which means the call monologue is able to have:
- medias, which have non-even amount of subscribers and subscriptions
- medias of different monologues in the media's subscriptions list
- medias of different monologues in the media's subscribers list
Further, improve the `call_get_dialogue()` accordingly so,
that a detection, whether or not a from-monologue has already seen
before given to-monologue, will be based on from-monologue's media subscriptions.
Absent to-monologue medias in from-monologue subscriptions list means —
to-monologue has been never seen before, and we have to update tags accordingly
as well as subscribe matched medias of to/from-monologue to each other.
Change-Id: Icef81d06ac2ee6e150ecdea7133547166290b015
Moving from call subscriptions to media subscriptions.
Add a possibility to run `media_stop()` and `__monologue_stop()`
for all related to this monologue media subscribers.
This is an improvement, which gives the following benefits:
- all subscribers are handled inside of the func, less code out of it
- the function gets in sync with new media subscriptions concept
Change-Id: Ia0b897f53438559a68c8b469c71fec72f0d562af
Use media subscriptions model in the `kill_calls_timer()`
to find subscribers and related monologues in order
the to update the `xmlrpc_helper` data.
Change-Id: I4e7e8586a701eeb135c34138ba5a9dc288817c8d
In the `dialogue_unconfirm()` (previously `dialogue_unkernelize()`)
use media subscriptions to find subscribers/subscriptions
and correlated to them medias to unconfirm them.
This change is bound to the switch from monologue
subscriptions to media subscriptions.
Additionally: Refactor unkernelize/unconfirm in `call.c`
To provide a sense of the functions clearer,
the namings of the following function singatures
have been changed:
- `dialogue_unkernelize()` -> `dialogue_unconfirm()`
- `__monologue_unkernelize()` -> `__monologue_unconfirm()`
Change-Id: If8cc2515eb26dcc4ffed02a420514f98d43cc5c6
Report to whom a `call_monologue` is subscribed and
who is subscribed to it using media level subscriptions
instead of using monologues one.
Change-Id: I07a7353d5682b9346d1ade25d11b902ee927d4ac
Add handling of SDP session level attributes for:
- `monologue_subscribe_request()`
- `monologue_subscribe_answer()`
This will be used by `janus.c` related functionality.
Change-Id: I1c50b5b9da08e7d8cb2c98eb6995d8610386d6ed
Move `a=extmap:` attribute to the `call_media`'s
`sdp_attributes` using `stream_params`.
Required by the `insert_sdp_attributes()` used in `sdp_create()`.
Additionally revert `extmap` unit test checks in the
`testVideoroomWebRTCVideo`.
Change-Id: If63e4e8733ea0899f34fae1f1d38997e9e2c081c
Move `a=ssrc-group:` attribute to the `call_media`'s
`sdp_attributes` using `stream_params`.
Required by the `insert_sdp_attributes()` used in `sdp_create()`.
Change-Id: I67025dc83dd8e5e46422b6dc1bc54aa9c838dfea
We have to move the list of attributes with following types
to the `call_media`'s `sdp_attributes` using `stream_params`:
ATTR_SSRC
ATTR_MSID
ATTR_OTHER
This is then required by the `insert_sdp_attributes()`
used by:
- `sdp_replace()` -> `replace_sdp_media_section()`
- `sdp_create()`
Additionally: move the `insert_sdp_attributes()`
to the usage of the `append_attr_to_gstring()`, which
gives SDP attrs manipulations control over attributes
being inserted into SDP. Previously not supported.
Additionally: `process_media_attributes()` takes new
argument `bool strip_attr_other`, in order to control
whether or not to strip `ATTR_OTHER/ATTR_SSRC/ATTR_MSID`.
For now there is only one user of it `replace_sdp_media_section()`,
but for later on, we can control this using this bool.
Additionally: `print_sdp_media_section()` takes new
argument `bool print_other_attrs`, in order to control
whether or not to strip `ATTR_OTHER/ATTR_SSRC/ATTR_MSID`.
This is required, because the sdp replacing/creating mechanism
needs a controllable way of adding them, users are:
- `janus_videoroom_join()`
`janus_videoroom_configure()` - always need them
- `call_publish_ng` - always needs them
- `call_subscribe_request_ng` - never needs them
(otherwise leads to a duplication of such attributes)
- `call_offer_answer_ng()` - requires them always
- `call_subscribe_request_ng()` - never needs them
(otherwise leads to a duplication of such attributes)
Change-Id: I9c83d99da1603acb55443c462797b2cd1e72477d
Stop using the call subscriptions model in the
subscribe request/answer functionality and move to
the media subscriptions.
Change-Id: I8aab2b1b4cdf9a3c5a04172c395ca509295ce0a3
The global list of monologues is populated in reverse order from the
list of medias. Iterate the list backwards so that the resulting medias
are in ascending order.
Change-Id: Icadca7a6cecb636ca6e021c0286b44e5cd3cdc84
The index j we get is not the position in the output array/list, but
rather the index into the source array. Simply append each new element
to the array in order.
Also make sure we don't skip over empty elements in the array when
building the JSON list, so that the order is preserved.
Change-Id: Id6577410e114f0ddbea745977118f1bab2e38fa9
For the use case with a separate base chain, we want to preempt other
firewall rules by default and insert our immediate jump rule at the
beginning, rather than at the end. Add an option to provide the other
behaviour.
Change-Id: I16171f7c028c89b94823ecc99387771be3ba9443
If we're not using a separate base chain, create the target rule with
the UDP filter in place, same as the "immediate" rule in the case with a
base chain.
Reported in #1732
Change-Id: I0e67a88f5f51e21ba9537c87e2955f910dd6ec2c
If we're updating the handlers for one particular source -> sink flow,
only stop/reset the handlers matching this flow.
Change-Id: I1d046f47f8d26cac47c5d0f4318498eacb6c5677
Fix all instances of argument-less function signatures.
Fix all instances of auto-cleanup variables declared after they need to
be in scope.
Change-Id: I3a005df03ede971e08d4f62d7c7711a1913fda5e
This is a fix for the following found defect:
*** CID 1568540: Null pointer dereferences (REVERSE_INULL)
/daemon/sdp.c: 2065 in insert_codec_parameters()
2059 pt->payload_type,
2060 STR_FMT(&pt->format_parameters));
2061 }
2062 if (s_dst->len) {
2063 /* append to the chop->output */
2064 append_attr_to_gstring(s, s_dst->str, NULL, flags,
>>> CID 1568540: Null pointer dereferences (REVERSE_INULL)
>>> Null-checking "cm" suggests that it may be null, but it has already been dereferenced on all paths leading to the check.
2065 (cm ? cm->type_id : MT_UNKNOWN));
2066 }
2067 g_string_free(s_dst, TRUE);
2068 }
2069
2070 /* rtcp-fb */
Change-Id: I309fd6268b889ceaf32a58d2fbe17a8c891a95d6
Move processing of removal and substitution
attribute manipulations to the bottom,
after all fixed (well known to rtpengine)
attributes are skipped already.
This is done for media and session level attributes:
- `process_media_attributes()`
- `process_session_attributes()`
This is to add an efficiency to the current processing,
and not do double work.
Change-Id: Idd933f9d85aef5e9a5d597f8825d21e45f43ef37
Add media attributes substitution support to
the following functions:
- `append_attr_to_gstring()`
- `append_attr_int_to_gstring()`
First functions check, if the attribute has to be
removed (by the manipulations profile), if not
then it checks out whether we have to substitute it.
If neither of manipulations have to be applied,
then the given attribute gets attached to the chopper.
This gives support of substitution for
such media level attributes like:
- `mid`
- `label`
- `ptime`
- `ice-ufrag`
- `ice-pwd`
- `ice-options`
etc.
Change-Id: I35a1ad71f1031d986a79446522da2a557c09ddcc
Setting the target info of an `expr` object doesn't result on the data
being copied by libnftnl (unlike other objects). Use static storage to
fix invalid pointer usage.
Reported in #984Closes#1731
Change-Id: Ic5c156a83504a24fb618d770ba53cd1ec4fb2435
Because the attribute parts variables are declared in
one signle row, these (popping up) commentaries in other
code parts, show only the first code comment for all of the
variables, which makes the code reading confusing.
In order to fix that, declare each one separately, that
gives own code (popping up) commentary per variable.
Change-Id: Iddb94b989844b997055be70a526cca59ab2fddf3
Ignore `a=` during sdp attribute level manipulations
during lookups with the `sdp_manipulate_remove()` and
`sdp_manipulations_subst()`. This is only in:
- `append_attr_int_to_gstring()`
- `append_attr_to_gstring()`
This is required for a proper `str` matching in ht.
Then explicitely add `a=` to the resulting `GString *s`.
Change-Id: I569a356e9a01cffb0068a87a9c6d5a568fe85ecc
In order to be able to remove or substitute `fmtp` parameters,
we have to take care of that in `insert_codec_parameters()`,
since `fmtp` are additionally being printed already after
execution of `process_media_attributes()`.
Change-Id: I78547be13939e161b193beecd8693e22c534fd18
With the "foreign" flag now stored in call_flags, restoring a call from
Redis restores this flag as well, overwriting the desired flag as we had
set it through call_get_or_create().
Reverse the flag setting by taking it out of call_get_or_create() (where
it's always false anyway, except when coming from Redis) and setting it
explicitly with call_make_own_foreign() after restorting call and its
flags.
Change-Id: Ib68be2aeedfa988b7555e426fa337657e1062245
Start using media subscriptions instead of call subscriptions
in the `call_block_silence_media()`, because older concept
gets deprecated.
Change-Id: I0ac0378a99d69017d34f8f949d7f3228bfa5b07a
Start using media subscriptions instead of call subscriptions
in the `codec_update_all_handlers()`, because older concept
gets deprecated.
Change-Id: I1cbd5379855e557099894f4b9a508a65ca78214c
Stop using call subscriptions for lookups based on
the `__sub_is_transcoding()` and use media subscriptions instead.
Change-Id: I545daca19f5ce433fd660a5a7d60181ac4ed1d8b
Part 1.
Deprecate usage of the call subscriptions for updating
transcoding attributes, use media subscriptions instead.
Change-Id: Iadde906189c9634d7691d823556f2c0dfd61a655
Stop using call subscription in the `monologue_offer_answer()`,
which is used here to update transcoding related attributes and
use media subscriptions model instead.
Change-Id: I27abfe23ed2f3f532c3899e5d483cb302e43a142
Move linking of the media to its monologue, from the `json_link_medias()`
to the `json_medias()`. This is required, becase the `json_link_medias()`
already needs to operate on medias list, which is fully linked
to their monologues. Otherwise it can happen, that during the
linking of media to media in `json_link_medias()` (subscribing them)
the monologue for the other media is still not linked.
Change-Id: Ifc4dd8dff27f65e664b4fd21332a1d296d07759b
Start using the media subscriptions model
(based on newly introduced `media_subscription` objects)
in scope of:
- `redis_encode_json()`
- `json_link_medias()`
- `rbl_subs_cb()`
Change-Id: I3f7267ab156b361d7e7bec4ff91a8976a7be02ee
Start using the media subscriptions model
(based on newly introduced `media_subscription` objects)
in scope of `__find_subscriber()`
Change-Id: Ief3e9d0785ad53884be347ca21d6766c3ad2b275
previously, dtmf_inject wouldn't add the events as the dtmf_payload_type
was set to -1 as part of the delay buffer handling. However, as we
know we want this DTMF, this change updates the function to check for
and use the real_dtmf_payload_type value
Then, in codec_add_dtmf_event, we can check the injected bool and
if set, use the real_dtmf_payload_type again to decide whether to
push the event onto the queue
closes#1722
Change-Id: I34e35f92e014f4aed9e045737df7400155b86602
Janus reports inactive and disabled streams only as being disabled and
doesn't report the codec in use. Mirror this behaviour.
Change-Id: Icf193f60a054b803afea02f048dcd8d26632bc47
UDP packets sent in response to a UDP request should have the same
source address as the request's destination address.
This can be achieved with sockets bound to a specific address, but in
the case of ANY-bound sockets, we can use the PKTINFO mechanism to do
this.
Extend control_ng_process() to accept an extra socket address
corresponding to the local address to use. Extend the signature of the
callback function (to do the actual sending) accordingly.
Extend socket_sendiov() to be able to set the PKTINFO cmsg when sending
a packet.
Add socket_sendto_from() as a convenience wrapper.
Extend control_udp_incoming() to pass the address from
udp_buf->local_addr back to socket_sendiov().
Change-Id: Idd019fdcfd796098e7807427e6686d4b05de35d1
Convert each listener entity into a list.
Support a list of values for each option so that multiple
ports/addresses can be listed.
Keep previous behaviour unchanged: If ANY address is given, open
listeners for IPv4 and IPv6.
Change-Id: Ic54f28d1262f60d5e5c9d824a95e7c33ebc2aba9
Start using the media subscriptions model
(based on newly introduced `media_subscription` objects)
in scope of:
- `ng_stats_monologue()`
- `ng_call_stats()`
Change-Id: I158aedd1fae9d65135144b3331089bfc11020f13
Start using the media subscriptions model
(based on newly introduced `media_subscription` objects)
in scope of `cdr_update_entry()`.
Change-Id: I0618a1ee51ec8ea208839da2de46781242287a12
Start using the media subscriptions model
(based on newly introduced `media_subscription` objects)
in scope of `cli_list_tag_info()`.
Change-Id: Ia1a464b3597d65390258df5e421e2c61dd84b0af
Start using the media subscriptions model
(based on newly introduced `media_subscription` objects)
in scope of `codec_update_all_source_handlers()`.
Change-Id: I29da49cdd2b5de8c6e6f9a6629f5b1f3867596ba
Start using the media subscriptions model
(based on newly introduced `media_subscription` objects)
in scope of `stream_packet()`.
Change-Id: Ia8d9442810c4afc12b00cad8b1a354d66bb5051c
Start using the media subscriptions model
(based on newly introduced `media_subscription` objects)
in scope of `hunt_ssrc()`.
Change-Id: I08c7292e0d73a486e25004358de91a3414ce886a
Start using the media subscriptions model
(based on newly introduced `media_subscription` objects)
in scope of `call_get_dialogue()`.
Change-Id: Id7b8f84354bcc0525ff180d94cedfc6dc29a7c63
The following functions have been deprecated
due to no use:
- `__offer_answer_get_subscriptions()`
- `__tags_get_subscriptions()`
Change-Id: Id71dcd1a5573720299711b369410cd7fcd9de476
Start using the media subscriptions model
(based on newly introduced `media_subscription` objects)
in scope of `__update_init_subscribers()`.
Change-Id: I45446239384cf2813d9ae6ecadb2499eefa86ca8
Start using the media subscriptions model
(based on newly introduced `media_subscription` objects)
parallel to existing model, which is based on
the `call_subscription`.
Change-Id: I1f111ef181b2d698609c0b28dd72431bb3f2cf0a
Introduce `media_unconfirm()` to do a selective handling
of medias to unkernelize the correlated to it streams.
This is analogue of the of the `__monologue_unconfirm()`
but for medias.
Change-Id: Id8ede0fc56412021c301e97764fd5dd070b7d484
Previous implementation assumes that we use the `call_subscription`
objects in:
- `call_offer_answer_ng()`
- `call_update_lookup_udp()`
- `call_request_lookup_tcp()`
when appealing to the `call_get_mono_dialogue()`, in order to
get the `call_subscription` objects, in order to then pass it
for usage in the `monologue_offer_answer()`, where the most important
again is to use monologue references stored inside
the given `call_subscription` objects.
Instead of using the `call_subscription`, just use `call_monologue`
objects as a base data objects for this work,
which will allow us in the coming commits to deprecate
the `call_subscriptions` based model and
get to the subscription model based on medias.
Change-Id: Ia9ee5ba66522929acbceca28854ebccd3705635a
Introduction of the basic functions required for
a handling of the media subscriptions:
- `__unsubscribe_media_link()`
- `__unsubscribe_media()`
- `__unsubscribe_all_medias()`
- `__add_media_subscription()`
- `__subscribe_medias_both_ways()`
- `__subscribe_matched_medias()`
- `call_get_media_subscription()`
- `call_totag_subscribed_to_monologue()`
- `call_viabranch_intact_monologue()`
Change-Id: Iad2af5323b2ea8a10a83064d9ee72106c1d8f9c0
We always need to (re)set the ssrc_map_out SSRC, even for the input
context, as this SSRC is used to look up the receiving SSRC context,
where the appropriate RX stats are stored, including the payload type in
use.
Change-Id: I434c6df4761bf56e36c7267dd3a44b0bb9c9b852
All functions that create listener objects take a read-only endpoint, so
make them as const.
Remove the extra TOS argument to make all signatures the same.
Change-Id: I722c7665b192476d90dbf0ece200d0bfd34cb9eb
Forking to background kills already created threads, so forking must
happen first and thread creation after.
closes#1695
Change-Id: I743b890b83903d9e0b3248b032844e7e357d2307