Deprecate usage of the bit flags for return.
And instead do:
- only return true/false for the redis update
- check if we have to destroy the whole call using the
`call_monologues_associations_left()` only
Additionally remove unused variables.
Change-Id: Ie858c533d1aa4b74024d65c7064aa56437389882
Check globally left monologues (with associations left) after
the `monologue_delete_iter()` has already done its job.
This is needed to prevent cases, when a recursive call of the
`monologue_delete_iter()` leads to blocking of the whole call
destorying, meanwhile it's required, e.g.:
- A is in progress of destorying
- B gets recursive call of `monologue_delete_iter()` and sees
that A has still one association left with C, which A simply
hasn't manage to remove yet.
This commit introduces new function: `call_monologues_associations_left()`
Change-Id: I0941c18a76fa8c2a78d3864aee9e6433283bec88
In commit 427615d45b we switched to usage of dh-sequence-dkms. By
renaming debian/dkms.conf.in into debian/ngcp-rtpengine-kernel-dkms.dkms
and replacing its `__VERSION__` with `#MODULE_VERSION#` we broke the
shipped RPM spec file, which also relies on our dkms configuration file.
Accordingly adapt el/rtpengine.spec.
Thanks to @themsley-voiceflex for the bug report
Closes#1650
Change-Id: I257a8c223f931bb959f245ed518b855ffa988a81
For a compatibility reasons (with other doc files and with RTD)
the `rtpengine.pod` and `rtpengine-recording.pod` file get
converted to the Markdown syntax.
The compilation of MD syntax synopsis files will work
using `ronn` application, which converts them to man pages.
Change-Id: I75b54a712786a0a237c51c702ed1a2cc09e3a033
Due to a unification of the way we store documentation files,
the 'rtpengine-recording.pod' has been moved to the 'docs/' folder.
This 'docs/rtpengine-recording.pod' will be later used for the RTD a source.
Change-Id: I5267bd74358aa46d174ba4778f2f11651c6d0ba6
Due to a unification of the way we store documentation files,
the 'rtpengine.pod' has been moved to the 'docs/' folder.
This 'docs/rtpengine.pod' will be later used for the RTD a source.
Change-Id: Iba9d77e397c042f7d84e8e51d2367b42ecb5b07c
It's been noticed that quick access links in the general `overview.md`
of the RTD are broken, they simply don't see needed files, since
these links were implemented for the github usage initially.
Because the `overview.md` is just a symlink to the `README.md` (used
by the github), it's impossible to have own links (to the github files)
for the `README.md` and own links for the `overview.md` in the RTD.
Keeping separate files for RTD and github's README would be bad idea,
since then we have to manually keep them synced.
Instead, this commit proposes the solution like this:
- have same quick access links for the RTD and the Github
- by clicking quick access links in the github, one will be sent
to the RTD article.
It's a compromise solution, which gives us working access by both
github and RTD.
Then, in order to access github doc files, one has to enter the
`docs/` folder and select a needed one.
Change-Id: Ic58437dccbdccd8289e8282fcf8e91c71057e366
Avoid trying to acquire a recursive lock by making sure the response is
always generated in a different thread.
Fixes#1656
Change-Id: I6c4c5bb52cb95a204823848bb427ab24f42dcccd
This commit: 6f0ad0db0f
introduced an improved behavior of the call deconstruction
when dealing with multiple forked legs. But it also
introduced a regression related to TPCC related calls.
This is because it takes into consideration existing
`->viabranches`, which is not efficient in certain cases.
Instead, we just have to ensure, whether there are
other monologues of the call object, which are not directly
"visible" for this branch being cancelled (so they are not directly
associated to that), but they might have own associations
present, which means the call mustn't be globally destoroyed.
Change-Id: I630f2d88ef3b557af3a95816fc2703daccaff374
Upon calling the `monologue_delete_iter()`, we have to take into account
an amount of forked legs we have now entirely in the call.
If there's more than 1 forked leg, don't mark the whole call for a full destruction,
since other forks might be successful (and they are not in a scope of processing now).
Only destroy this branch and associated to it monologue(s).
Change-Id: I6fdb4ba33ae7582578d84d57d91f9536d932ca47
For efficiency reasons `substitute` kind of SDP manipulations
commands have been moved to the `GHashTable` instead of the `GQueue`.
Change-Id: Iec6c44109ae912ba0de440bbed6ecaee6a238b97
This replicates the code to replace audio packets with injected DTMF
events. Unfortunately the code paths between forwarding audio and
processing/forwarding DTMF events is quite different, so some slight
duplication is needed.
Additionally the case of blocked DTMF + injected DTMF must be handled.
Change-Id: Ieb576b4b6644c9b154ba4c6ebd48fe12ff08e1de
DTMF injection must use the codec handler of the primary payload (audio
stream), not the handler of the DTMF PT itself.
Change-Id: Ied2d1f969bfc76ef7af0ada063b90a47c4633557
Add special return value to indicate that an event was a duplicate and
should be discarded.
Functional no-op.
Change-Id: I5d40bcc4a0bc45ba7875f4132873e7b8d747e132
Add a flag to inhibit kernel mode while DTMF injection is active. Tie in
DTMF playback trigger function: Remove stream from kernel, set inhibit
flag, play DTMF, then unset inhibit flag when all events have been
injected.
Change-Id: I533ec95a676bc7edf4dd973217f8d9499f1e22b6
DTMF requires the "end" event to be sent multiple times, requiring
sequence number adjustments after DTMF injection has finished. Add
support for this to the kernel module.
Change-Id: Ie5c8f18eda39553a6ebbdd35ef2341be01f2a59f
Support using the SSRC TS derived from received RTP packets as "encoder"
TS (the "next" expected TS) for passthrough RTP in addition to the FIFO
TS of an actual encoder.
Change-Id: I7c49c27651eb89c5349bbf290b1c0ad160f77e3b
The "duration" is not valid for events which are not end events as
there's no previous event to derive a duration from.
Change-Id: I3f9dad536b168cce24d1a58c5bcf25e5cacfe7a8
Make the decision whether or not to use SSRC passthrough handlers in the
upper level calling function, instead of implicitly in
__make_passthrough_gsl()
Change-Id: Ied88120ea4f12d50e3c5afb96023bdd86c42c6e1
__make_passthrough_ssrc() is only used after a passthrough handler has
already been created via __make_passthrough(), and the two functions do
exactly the same thing other than using a different handler functions.
So we can skip completely shutting down the handler and creating a new
one, and only update the handler function instead.
Change-Id: I5acdb5f5508b385320dda6b8bbb18cccd315f99d
Instead of just setting the "force transcoding" flag when DTMF injection
is required, check it on a per-codec basis, so we can be more granular
with this decision.
Functional no-op.
Change-Id: I496f3d1fba5840e7870c373f94190243392db438
Instead of doing two calls to the kernel every time a forwarding stream
is deleted (one to update the stats and one to delete), combine these
two into a single call using REMG_DEL_TARGET_STATS.
Change-Id: I9fcb148930c24bc866f842a50edd613fb6296de0
Separate out the call to kernel_update_stats() from the function
actually consuming the stats and updating the userspace internal
counters.
Functional no-op.
Change-Id: I4d357e2649c31db7839d8f1369bca9750ef7eae2
This combines the REMG_DEL_TARGET method with REMG_GET_STATS. It
retrieves the stats of an existing target, returns them to userspace,
then proceeds to delete the target.
Change-Id: Ibd715c176f0415c49ac94b9e3c8d8cafdd829e1a
When the `discard-recording` flag is given in one of the commands to
rtpengine (e.g. in the `delete` command), the metafile is renamed to a
.DISCARD suffix and then deleted.
The recording daemon then, seeing the .DISCARD suffix, proceeds to
immediately close all recordings, delete the files if any, and delete
the entries from the DB.
Change-Id: I3f0cac129f2d56cbccd770d43bf434dea6c0a0db
Rename the original call_delete_branch() to call_delete_branch_by_id()
and provide a new call_delete_branch() which takes a reference to a call
object instead of a call ID.
Change-Id: Ie549e7f550fab5edc6e81472e78565e1925fae67
These are two different file paths and each belongs to its respective
recording method. Move them into the appropriate struct. Also use
g_clear_pointer() for memory bookkeeping.
Change-Id: I25a897636d4f6e8fea3c533f9ca39c90f81390f8