Reverses the side effect of I225b43dff
Restores consistency and fixes tests and very slow systems
Change-Id: Ib4285e7aae95cd58eccd1d3c4f84e5786b4b0810
(cherry picked from commit ffacde5748)
(cherry picked from commit b36b9abf13)
Protect selected_sfd with in_lock.
Protect RTCP sending with in_lock and out_lock as appropriate.
Has the odd side effect of RTCP reports expected in tests to be sent one
packet later than before.
Closes#1966
Probably fixes#1927
Change-Id: I225b43dff8e8fbb938d3be6aad50249997615d77
(cherry picked from commit ffc539c0d8)
(cherry picked from commit 28576a6efc)
Using `l->next` as a test for whether only one element is left in the
list is not reliable. Use the actual list length instead.
Update one affected test.
Closes#1961
Change-Id: I5773715700220cd762e61090bac941ddd33afd9b
(cherry picked from commit 02897ccb46)
(cherry picked from commit 5b97378063)
A call that gets created but then doesn't get initialised would have its
Redis DB left at zero. At destruction it would then try to switch to DB
zero. Fix this by using an appropriate initial value.
Closes#1905
Change-Id: I852e48c5a06b732b37d2ccd5c478de4760aacd4e
(cherry picked from commit add46f265a)
(cherry picked from commit 322e00b60a)
Make sure we properly return a failure if no supported payload type is
present.
Change-Id: Ia483e0819b2d8ca0c2c5184c929dfe3d05c96ca1
(cherry picked from commit 5f6609de5d)
(cherry picked from commit 3765c3066e)
Make sure a codec is not only known to us, but that it can actually be
used, in places where it makes sense. This is partially redundant
because ensure_codec_def_type already takes care of this, but a codec
definition may come from a different source, so it doesn't help to
double check.
Change-Id: I91af84afc2477840f1400674b2538ad8fb7746ee
(cherry picked from commit 7b60e85970)
(cherry picked from commit 6dec6bcd95)
The pcre2 API was changed from
pcre2_substring_list_free(PCRE2_SPTR *)
to
pcre2_substring_list_free(PCRE2_UCHAR **)
in 10.43. The difference is a `const` qualifier. Work around this.
Closes#1869
Change-Id: Ib3dd3003352f6c3155bb47d69ecb7a1b02f4647a
(cherry picked from commit 4ebebe08d8)
(cherry picked from commit a4eb4565c8)
Fixes a corner case that happens when trying to delete a call created with
ng offer and no-redis-update flag and for which no ng answer was received.
In such cases, one would receive warning messages from Redis
"ERR DB index is out of range".
What happens is that on call creation redis_hosted_db defaults to -1. This
value is changed when writing to Redis, but the writing is not done for a
ng offer with no-redis-update.
Kudos go to Pawel Kuzak.
Closes#1910
Change-Id: Iad19ec8ac69b169e6352662697b17eb23e6970fb
(cherry picked from commit bba9625b25)
(cherry picked from commit 89fb267a2a)
A matching payload type number in an answer might not be enough to
establish compatible codecs. Also check the format parameters. Reject
and ignore answer codecs that are not compatible.
Change-Id: I12a1287216886926ec4b3c704029c923f815b429
(cherry picked from commit 9c00f30475)
(cherry picked from commit 71ff9210ce)
(cherry picked from commit 76bfb0e707)
(cherry picked from commit 9dee54d4c2)
HTTP/WS init creates worker threads, which would be terminated by a fork
to background. Reverse the order.
Closes#1896
Possibly also relevant to #1895
Change-Id: I30b61e07ad3bed41b6b241e8943ed479277c1474
(cherry picked from commit dd04af1163)
(cherry picked from commit bd07036ca1)
These strings are not null terminated. Use the correct string length.
Change-Id: I15d7541af0d9cc09401180a7d45edbec9b915aa2
(cherry picked from commit 0a1d658766)
(cherry picked from commit 99415171bd)
under normal circumstances, the rtp sink enters this function first
and updates the reti->local.family var to AF_INET so that when the
function is called for an rtcp sink, it exits the function early.
However, if media is being blocked the rtcp sink is the first to
enter the function and does so with a NULL payload type. this NULL
check is therefore required to prevent a sefgault on the call to `assert`.
closes#1876
Change-Id: Id95cbbc9ae388f50dd51417c351f4a9ba09eb5f0
(cherry picked from commit 8e04c44b86)
(cherry picked from commit 7b9102a703)
using str_init_dup_str doesn't leave enough room for appending encryption
related pieces to the end of the packet when used for, eg, dtmf
injection
closes#1819
Change-Id: Iefae0e04b38f4a3eaaac32ed1ba70c7e3ee8e979
(cherry picked from commit ce66c7b8fa)
(cherry picked from commit 4fd891fcf3)
Use a BIO WRITE callback instead of BIO_read'ing from the BIO after each
operation. This is a more direct way to intercept data that needs to be
sent out.
Implement MTU-related BIO callbacks.
Deduct the assumed IP MTU overhead from the configured MTU during
startup.
Unlike the previous code, this does not necessarily send DTLS from the
same socket that received a message, nor to the same address that sent
one, and instead always uses the selected_sfd and ->endpoint. This may
or may not be a regression.
Closes#1806
Change-Id: I4d4456df3f378d00782cbfa64afdb2a038217e6c
(cherry picked from commit 08332161cf)
(cherry picked from commit 5331506303)
Remove all codecs that cannot be transcoded to when the audio player is in
use.
Add safety to make_transcoder to return failure in case an unsupported
codec is requested for transcoding.
Convert leftover passthrough handlers to SSRC passthrough if there are
any (shouldn't be).
closes#1858
Change-Id: I1822e48723622d550624c7355a1acfbf8ca38eb8
(cherry picked from commit 4573f32d9b)
(cherry picked from commit eddc467899)
If a stream has been pushed to the kernel from anything other than RTP,
even though RTP is expected, we get a forwarding entries without any
SSRCs. This is valid, but once actual RTP is received, it needs to be
passed on to user space, so that SSRC contexts can be set up.
Possible fix for #1855
Change-Id: I51b82d3cf79cf66780fdde154bebe56e0f43174b
(cherry picked from commit a0b705eef9)
(cherry picked from commit 48bae073ff)
Address must be printed with [] if it's IPv6
Change-Id: I238a774c5fc2b9957b29a325f2c00eb02d840a4b
(cherry picked from commit 2acf5a6f85)
(cherry picked from commit 86cd5f2ab4)
... to be operational and useful on supplemental codecs (DTMF etc)
Change-Id: Ifedefb143b984e6bac49dbbd744fe4647891bc7a
(cherry picked from commit abbc02296f)
(cherry picked from commit f7b6a6c86e)
having injected events on the recv list can cause out of order TS
values which results in is_in_dtmf incorrectly returning NULL and
letting the transcoded PCM frames through.
It also doesn't make sense to add DTMF to the send list unless they're
actually being sent, so injected delayed or unblocked
Change-Id: I07e2a35e27142715a5257f199326b7a3d133e2a8
(cherry picked from commit c57a3f7def)
now that the returned last_event_ts is always that of the previous
DTMF, we can ensure that the next one isn't transmitted until that
time plus the required pause.
Like the num_samples calculation, the actual time needs to be
increased by 1 packets worth of samples so tha pause lasts the
full duration required
Change-Id: I6da1dd7cbcf49f7f0431a5123df2cdc382fe3dba
(cherry picked from commit e12e408ee3)
this function is used to determine if a pause is needed on a new
injected DTMF's start ts to ensure a gap between the events. However,
if an inject request comes in after the end of the previous event
but before it would have been offset due to pause, no pause is added
This change returns the ts value from dtmf_state if the queue is
empty as that will always be the ts of the last DTMF transmitted
Change-Id: I4f3cf5115d1a8e26c0ca1bc9570c46e29391e0d0
(cherry picked from commit bdb1022677)
the num_samples was added to the start_pts, which is the first event
packet timestamp, which has already increased its ts by its event
duration. so, the total duration of events ends up being one packet
more than intended.
Change-Id: I423bb222a81c5bd78e570ff2026c72dd4dd1b100
(cherry picked from commit c92748dc9d)
Make sure we increase the output RTP sequence
number for each generated packet in the case
of packets that need to be duplicated or sent
repeatedly (DTMF end event)
Change-Id: Ia16ffefc0791d01575248ac5d8025eb30ccaec67
(cherry picked from commit 41a9894cce)
in some scenarios the start event ts can be before the *pts value, which
will result in a shortened DTMF event being transmitted than expected during
injection as the end event ts is calculated based on that initial dtmf start
value.
This change updates the end event ts by the amount the start ts was
behind, so that the resulting event has the right duration
Change-Id: Ia637d1e1c5d92de8b35317ec552c22eae23c0645
(cherry picked from commit c7fa81c764)
when DTMF is being transmitted using codec_output_rtp, the scheduled
time to send the packet is calculated using the timestamp difference
from the last transmitted applied on top of the realtime time the
last packet was sent. However, the timestamp is only updated on the
first event packet so a delay needs to be passed in to codec_output_rtp
to ensure the subsequent packets are scheduled based on the event
duration of the event packets
Change-Id: I5a2f6cf67b5f570f6099d201592d9a6fc01d60a5
(cherry picked from commit 6aa10931ad)
Looks like this didn't exist prior to 1.1.1
Fix-up for 8fba68f2c9
Change-Id: I1568ce6c583114659cc2e9997269f45043bd220a
(cherry picked from commit d6b09b53ea)
The monologue label (and possibly other) get set during the offer/answer
routine. Do the call recording setup after this has been done.
closes#1791
Change-Id: Ie1b1a7d5a1df7058ba90c3dd5cbd79159f48683d
(cherry picked from commit c96755de06)
poller_new used to have the side effect of initialising rtpe_now.
Restore this side effect explicitly in the startup code, so that timers
are launched with the correst start time instead of zero.
Change-Id: I590061a9665b52c4aed00c06dc330d2a226c73d3
(cherry picked from commit 8458652d5f)
Partial backport of 6a8c523d5
If we hit the maximul allowed loop iterations when reading packets and
end up aborting the loop, we must set active_read_events back to zero,
so that the next time a read event is received we actually do the
processing instead of thinking there's still an active thread.
Change-Id: I2da17e67ab132ea2d3e1beb399c939195eeaa2f4
Fix a regression from 4291c858
send_timer_rtcp() does its own locking of the SSRC. Release the lock
before calling it.
Change-Id: I185fb2fb4b47a343ab4be00d16629b5f330ee965
Check the correct field against "*"
Change-Id: I12e3b91f974d3acd9798c93f10491ef6dae43c1a
(cherry picked from commit 5fb74f1e43)
(cherry picked from commit db095377ee)
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
(cherry picked from commit c6a5b53912)
Reading learned_endpoint must also be protected by the mutex.
Warned-by: Coverity
Change-Id: I9909d58e7f06806f7398c16c750a6063e923d766
(cherry picked from commit e439a27def)