Replace with hand-rolled requests made via libcurl.
Background: libxmlrpc-core-c3-dev packaging is currently broken in
Debian Sid and this is a good opportunity to move away from it.
Ref: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1102554
Change-Id: I8a09452220993afdac19654edf13d7f3f6ba64c9
(cherry picked from commit 5d985372d8)
(cherry picked from commit 0f1cd39c1f)
If recording-method is pcap, then proc is zero-initialized, so
meta_filepath is empty. This shows many logs such as:
[core] Failed to open recording metadata file '(null)' for writing: Bad address
Prevent them by returning earlier.
Fixes#1889 for real this time.
Amends commit 759fd72dc6.
Closes#1924
Change-Id: I25c9acefba9ee129354fd799ef493af86b9eab2c
(cherry picked from commit 312997c21d)
(cherry picked from commit d7d51e83ed)
We need separate tracking for A and B sides
Change-Id: I9aeb91beb58e9efc5e8f79f336d120e46c25b8c9
(cherry picked from commit fa3de35448)
(cherry picked from commit bee016322d)
Media IDs are supposed to be unique. Non-RFC OSRTP may however lead to
duplicated media sections with the same media ID. Use a hash table to
track which media IDs have already been seen, and ignore any duplicates.
Change-Id: I9de5fdf3165fc4326862af708aec3d4f6736cb12
(cherry picked from commit b742dbc460)
(cherry picked from commit 87f5434415)
(cherry picked from commit c427824581)
With reuse-codecs, we still need to place the codec from the SDP into
our prefs list, even if it's already present, as the format options may
have changed. Update one affected test case.
Closes#1921
Change-Id: I688c57a8c45ec4c3bf159fe2193a0e00bbceeda2
(cherry picked from commit 65bfe22d40)
(cherry picked from commit 5560aa6c26)
This triggers an initial "no carrier" indication if the sender is slow
to start PCM.
Change-Id: I3513efafae06f992b3c9abd58b8ec797320c3b56
(cherry picked from commit dafb68ef80)
(cherry picked from commit 8fa68f2e8a)
Use the correct media object (the source media) to obtain media-level i=
lines from. Adapt OSRTP output function to do the same.
Change-Id: I9ba4db286cf9d822b8986a7da2cb4f4aa1c69646
(cherry picked from commit 3385191049)
(cherry picked from commit 02bacd3adb)
Grab source monologue and source media only once, and pass the object
down to the various functions, instead of doing the retrieval several
times in multiple places.
Change-Id: I88d019dbf9493fa0037161390fdb9efda58f5441
(cherry picked from commit cabd5e4676)
(cherry picked from commit a409179a81)
We know whether we're printing for monologues or for medias, so there's
no need to have a generic function signature.
Change-Id: I356747686adb34c19ba2ba4c77c2d0a77b85a364
(cherry picked from commit e0e4ba5b7c)
(cherry picked from commit a5dadb7b9b)
This is a normal condition for a first offer. Reduce log level to debug.
NGCP-Flow: mr13.1
Change-Id: I785cee82ead90b1e797c09017c3e3a77da113553
(cherry picked from commit d483ef185b)
(cherry picked from commit 6da0da81e8)
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 e0d72cc445)
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 8256c1662b)
These are potentially computed from inside each subdir, and in addition
due to what appears to be a regression in GNU make 4.4, where it is
reevaluating variables that contain $(shell) functions, many times (in
the order of thousands, this was slowing down the build, were on the
Debian amd64 build daemons it went from 5m with GNU make 4.3 to 2h40m
with GNU make 4.4. Although the bulk of the slow down has been fixed
with previous commits, the remaining optimizations are only to avoid
this potentially happening again in the future, and to reduce useless
duplicate work.
Instead of trying to cache the values from within make itself, where
programming this there is extremely painful, and does not seem to be
able to greatly reduce the number of calls, because the build system
is going to be called multiple times for different targets. Simply
externalize the generation into several shell scripts, that we call
to generate a make fragment that then we include from the various
Makefiles.
For a Debian build with GNU make 4.3, this reduces the amount of total
pkg-config calls from around ~1600 to 128, for dpkg-buildflags from
~1100 down to 6, and for dpkg-parsechangelog from ~56 to 17, but the
slow down is not as significant there anyway.
For a Debian build with GNU make 4.4, this reduces the amount of total
pkg-config calls from around ~2600 to 128, for dpkg-buildflags from
~2800 down to 6, and for dpkg-parsechangelog from ~350 to 21.
For a Debian build with GNU make 4.4, this reduces the build time
on this system from 2m10s to ~ 1m30s.
Change-Id: I427d0ea5106dc6ed1ff9e664ccdba2fa0725b7d0
(cherry picked from commit 7dbe24e4e5)
(cherry picked from commit 47205d8824)
Starting with GNU make 4.4, build time have massively regressed
where before they would take 5m on amd64 now can take 2h40m. While this
seems clearly broken, the release notes are filled with notices for
breaking changes, and in particular the one for passing all make
variables down to the invoked programs executed via the «shell» GNU make
function, so it is not clear what is expected breakage and what is not.
This has been reported in Debian, but not yet upstream, and while it
seems like a clear regression, it's not clear what will be the upstream
take on it. For now apply workarounds that do not change semantics, and
which do not regress with older GNU make versions.
Use the GNU make «origin» function instead of «?=» which defaults to
defining a variable as a recursive one. Coerce already defined variables
into simple ones to avoid GNU make re-evaluating these variables for
each «shell» function invocation.
Ref: https://bugs.debian.org/1092051
Change-Id: I076fc05dd616918473a22e7e942fecfdc9851d47
(cherry picked from commit 887fb40f3f)
(cherry picked from commit 4c114ab9af)
If the receiver of a previously passthrough T.30 stream gets switched to
a generated PCM stream from a T.38 gateway, continue the sequencing of
the previous SSRC. Technically this is not necessary as the generated
PCM stream gets a new SSRC, but at least Asterisk seems to ignore this
and expect sequencing to continue, and will ignore PCM if the sequence
jump is too large.
Change-Id: Ia4656770db11f5fa1a1e9bf5bd71a0398deb1e00
(cherry picked from commit 18579227a9)
(cherry picked from commit 6422500ba3)
Add a simple function that acts as an encryption callback to just update
the ext_seq (index) of the egress SSRC context. The kernel module
already does this, but the daemon only did it when SRTP was involved.
This now tracks egress packet indexes in all cases.
Change-Id: I9460744de55ead4b05aceb322fd8482442ff2b41
(cherry picked from commit 0da49000ba)
(cherry picked from commit 9279f30f75)
Some components (the timer thread used by the codec handlers in
particular) may hold references to components owned by the codeclib (the
.so handles in particular). Move codeclib cleanup towards the end.
Change-Id: Ic581588c27b69c025576c14a69e999c9ca5d1597
(cherry picked from commit 43cc9cc06d)
(cherry picked from commit c747a9ad26)
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 1df2df383e)
Deleting a call can have the side effect of changing the active Redis DB
on the writing instance. Restore the correct DB afterwards if needed.
Fixes#1905
Change-Id: I12dae767ffa5d25703e024d2ec59aa21ba9da101
(cherry picked from commit fdabc9b59e)
(cherry picked from commit 6df71f2be7)
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 55f48a3bd6)
If keyspace notifications are used at all, the respective objects and
threads must be created during startup. This requires at least some
keyspace to be configured. To support usage without any keyspaces
initially (and add them during runtime), add a special case (set
keyspace to -1).
Convert all keyspace variables to signed ints. Ignore negative keyspace
numbers where appropriate. Support Redis endpoint addresses without
database number.
Fixes#1902
Change-Id: I45a3c87bc515f9b14e64ec1ec0906dde271b5f8d
(cherry picked from commit fb1ad3f0cf)
(cherry picked from commit bf60ce2744)
If keyspace notifications are not configured at all, bail with an error
when there is an attempt to add a new keyspace or remove one. We get a
segfault otherwise.
Closes#1902
Change-Id: Ie47cf5f7762792aabe38476739f0dcf9927787ce
(cherry picked from commit 6dbf098bc7)
(cherry picked from commit 96f5adaee1)
Avoids segfault is extra connection can't be established
Closes#1903
Change-Id: I6eb7315f6774015703c7ad036e08596f7f550d60
(cherry picked from commit 172f389395)
(cherry picked from commit 4ed9638e02)
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 4860915441)
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 12e22f2c8b)
Fixes regression from the sdp_create rework.
Change-Id: I875052a0e229bca529ea461d7cd3c1c068feebee
(cherry picked from commit 18e0db51a9)
(cherry picked from commit 10c83eca5a)
Helper function to append just one attribute
No-op.
Change-Id: I6076760250af4b7d5fe7f7490210e8f9c43f0d22
(cherry picked from commit 02a2dc1fac)
(cherry picked from commit 1394100237)
Some compilers seem to think that there is some uninitialised usage
here. Work around this.
Closes#1891
Change-Id: Ic97a4b589fd2a0c33418a209557b7ce29009c7bf
(cherry picked from commit 4b614d8ce0)
If recording-method is pcap, then proc is zero-initialized, so
meta_filepath is empty. This shows many logs such as:
[core] Failed to open recording metadata file '(null)' for writing: Bad address
Prevent them by returning earlier.
Closes#1889
Change-Id: Ifeb3038f9a5c0bd6a9b7dd92842dd61783b40263
(cherry picked from commit 759fd72dc6)
Fixes regression from the SDP printing rework.
Fixes#1885
(We should add tests for this...)
Change-Id: I2154cd61fbe4a0c9bf63a25128f038068acffa0a
(cherry picked from commit 1a1eaab50b)
Use an object with local storage for sdp_address instead of just setting
a pointer. This makes it possible to put a different address.
Change-Id: I92e69b6a9eba9d0caa3853b3dcb134951d76b145
(cherry picked from commit a733a8c83a)