Avoid calling lws_write() from threads other than the service thread, as
this might not be thread-safe. Instead store the values used for the
HTTP response headers in the websocket_output, then trigger a "writable"
callback, and finally do all the lws_write() calls from the service
thread.
Reported in #1624
Change-Id: Ifcb050193044e5543f750a12fb44f5e16d4c0a08
(cherry picked from commit b207d0c586)
Removes one level of indentation for prettier code. Functional no-op.
Change-Id: I5f5528944f144499540f34bc1f322d00c9454fa6
(cherry picked from commit cb9ec2abf9)
lsb-base as of version 11.5 and as present in Debian/testing AKA
bookworm is a transitional package (depending on sysvinit-utils).
As of lintian >=2.116.0 a dependency on lsb-base is considered an error:
| E: ngcp-rtpengine-daemon: depends-on-obsolete-package Depends: lsb-base (>= 3.0-6)
| E: ngcp-rtpengine-recording-daemon: depends-on-obsolete-package Depends: lsb-base (>= 3.0-6)
Now having lintian 2.116.1 in Debian/testing AKA bookworm our package
builds fail because of this.
Since we still have init script support and references to
/lib/lsb/init-functions, let's depend on either sysvinit-utils
or lsb-base.
See related discussion on debian-devel mailing list:
https://lists.debian.org/debian-devel/2023/01/msg00149.html
Change-Id: Id3228425405e39904e52de8fdf00911539ac63bb
(cherry picked from commit e774bcb30f)
These are the entries the kernel will try to look for when userspace
tries to use the RTPENGINE support, but the module is called
xt_RTPENGINE so the kernel does not find it and thus cannot autoload
it.
The problem is that we have startup code that sets up iptables rules,
and will fail if the module has not yet been loaded. By adding these
aliases we are no longer concerned about the ordering, and can let the
kernel autoload the modules when they are needed.
Change-Id: I43a54af4e32adf755538c57df711da048c720030
(cherry picked from commit 2a6b2459f2)
1) Read dtxb->start while the lock is held (not strictly necessary as
the read should be atomic anyway)
2) Expect that dtxb->start can be larger than rtpe_now.tv
The latter can happen as `rtpe_now` in a timer thread is faked to be
exactly the time when the timer was supposed to run, and not the actual
current time, which means that a newly added packet can have a later
time stamp than the "now" the timer thread is using.
Change-Id: I48fd7f78af97c6d5b802e5151d69855a90f4032d
frame->linesize has padding and alignment issues. Explicitly calculate
the buffer size instead.
Change-Id: Ib3fb6bcbd855ca9a3e9b01e131002de06984c292
(cherry picked from commit f0b0feeca7)
At least the recording daemon uses the linesize directly, so this needs
to be corrected after returning a frame from the resampler.
Change-Id: Ia940d8acbbee3fb2d6564474ecb93ae27422d8af
(cherry picked from commit 06efa83cb0)
The packet must be decrypted first before RTP padding can be considered,
as the padding count is part of the encrypted payload as well.
Change-Id: I6aecff636efd420401856bb8110b3d784f989179
(cherry picked from commit 9e09cf3c40)
Despite this code being called from userspace, we must disable
interrupts while having ssrc_stats_lock acquired, as the same lock is
acquired elsewhere from within an interrupt context.
closes#1492
Change-Id: Ia6f31eb876ee98ad355d12f9361cbc068d008608
(cherry picked from commit e2ea393ecc)
Instead of always generating a new ICE foundation string for every
learned peer-reflexive candidate, try to use the same foundation string
for candidates that belong together. We use the priority number plus the
component ID for this to see if we've learned a candidate with a fitting
priority number before. If we have then re-use the same ICE foundation
string. This allows ICE to complete with only learned prflx candidates
and without (or before) re-invite to communicate the correct ICE
foundations.
Change-Id: I74bde6ef22a164df57d0b77cbaef34e4a499da72
(cherry picked from commit 89f5a988c9)
Setting the mux flag when rtcp-mux is given is fine, but we must still
provide an RTCP endpoint in case rtcp-mux ends up not being used, either
through an implicit RTCP endpoint or through a=rtcp.
relevant to #1443
Change-Id: I0710a50c31974f5e06bd94b47076a272bcca7a43
If DTLS is rejected in an answer via `DTLS=off` we must forget that DTLS
was previously offered, as otherwise a re-invite would detect the
fingerprint as changed if the re-invite doesn't offer DTLS again. We
also make sure DTLS is shut down if during stream init DTLS is not
given, when it was present before.
Change-Id: I48ee6f0ec5ec02f558a6799951552ea2272d0e96
The macro PDA_DATA() has been replaced by the inline function pda_data()
closes#1448
Change-Id: I0d611011879a470a58a4339f05f05981428793bb
(cherry picked from commit d172f20bf1)
* produces the non-NGCP debian dir
* It will be called by a jenkins job
Change-Id: I7e5eaabfc39a2ef3985a8a908998299c79d864a8
(cherry picked from commit bc09e94d61)
* pkg/deb/debian should be the only source
* pkg/deb/debian/backports: scripts to generate differences
This way is quite easy to maintain different versions, the
differences are managed via scripts
Change-Id: I0ac3a35fe3facf005564141563e2fb11b73cbefc
(cherry picked from commit d482d4053b)
For this initial version, these are mostly copies of the existing
/debian tree, with `ngcp-rtpengine` renamed to `rtpengine`, added
"conflicts" with the `ngcp-rtpengine` packages, and NGCP-specific
"suggests" removed.
Change-Id: I64289f9907ec09d003a96b8ac81f83c79d413747
(cherry picked from commit bbfe168b72)
The aliases created by systemd under Install/Alias are created and
removed as the service is enabled and disabled, and don't serve as
generic alias names. Furthermore they seem to linger behind when the
package is removed or replaced, which leads to collisions and
installation failures when the NGCP-specific package is replaced by the
non-NGCP version.
Change-Id: I2313ffffb1fa4fb1d570b23113b0618744c58e26
(cherry picked from commit 30c124ff05)
This package name is not used anywhere as a dependency, therefore it
makes no sense to list as a "provides"
Change-Id: I20db5308328b1c911495bf31417e4996a9824c3c
(cherry picked from commit 5ed13a130e)
SSRC entries might be present for the same SSRC in multiple contexts,
but only one of them will hold the actual stats. Don't create output
SSRC entries unless we know they won't be empty, as otherwise we won't
be able to create the actual SSRC entries (with stats) later on as they
dict key will already exist.
Change-Id: I54e263a17e14869ebb98456963f8ca75d11e9a89
(cherry picked from commit 9c2b53b3ed)