The `str` objects are owned by the SDP parser, so we need to duplicate
those as well as the string content itself.
closes#1303
Change-Id: I329893812b3d0a5ac7961e1895f7e0ef21f016fd
This fixes a race condition: Peer sends updated SDP with new address,
but an older RTP packet from the old address is received afterwards.
Thsi triggers learning of this old address is the "correct" endpoint.
Afterwards the peer stops sending RTP until a packet to the new endpoint
is received there, which never happens because the new endpoint has been
discarded in favour of the "learned" old one.
closes#817
Change-Id: I508f465a669f03e35ddcc6e770d5e7859e57569f
(cherry picked from commit 45bd10d323)
Transcoding should not be decided based on the name of the codec alone,
but primarily on the payload type. First the PT needs to be compared,
then the codec type must be confirmed.
closes#1289
Change-Id: I1a8bffc6d521443aba14d9b4cf1ad4d1e21f1226
(cherry picked from commit 34fdbcf838)
Without this correction, timestamp is not incremented in case of transcoding
(cherry picked from commit c76b0b7ef6)
Change-Id: I64bba46b276cb722f1caede68eb21fecd60ca955
The u_int<bits>_t are BSD legacy types, while the new ones are specified
by C99 and SUSv3.
Change-Id: Ia748cabc33a7e5adc2c7a6049ad1e55be0c788a8
(cherry picked from commit 07695d2abb)
When building using with_transcoding=no we should not expect spandsp to
be available as it's not even being used.
closes#1267
Change-Id: I2c8e0407b4dd46cfdd5322cd377b664955ad7c74
(cherry picked from commit ab8b25cca8)
get_ssrc_ctx() returns a new reference to the SSRC object, therefore we
must release the referece when we're done with it.
Change-Id: I0db07e4cca49a37af68d072ac6d0630c025b8809
(cherry picked from commit 6527fb513c)
If the seq_file buffer overflows, the printing of the last item is
re-tried following a stop/start event on the seq_file. Therefore we
cannot unconditionally increase the offset whenever our `next` method is
called.
closes#1244
Change-Id: I7026deeeb03423cc2da57b1e069019638cf734cf
(cherry picked from commit 9d4b870b0f)
The SSRC mapping strategy can change if a re-invite disengages
transcoding, therefore we always need to update the output SSRC mapping
even if the SSRC entry has already existed, to avoid stray SSRC changes.
Change-Id: Ib6f14ede1a4e615ff5eb8372cc68bf1acdd4b6c8
(cherry picked from commit dd7acd2644)
If the CFLAGS already contain -O0, skip adding the hardening flags, as
they force inclusion of -O2
Change-Id: I12ab0a61fff169954c73f3a714e563234c841483
Make sure the pointers we return from our continuous memory buffer is
always 64-bit aligned as it's used not only for strings, but also for
structs/objects, and such unaligned memory access is undefined on some
archs and flagged as such by ASAN.
Change-Id: I84cf74e4e9d203fe02507aa1190ccc6554fb36e2
UBSAN doesn't print stack traces by default. Enable them.
The GLib slice allocator must be disabled for proper leak checks and
must be instructed to always use malloc instead.
Change-Id: Ic4fe5ad38aa4460fbe43858b97226cce7d658038
Avoid accessing memory via pointers that may not be aligned, which is
undefined behaviour on some archs. Use memcpy for this purpose instead.
Change-Id: Iec6c8d15fdd7ef00896e494b69412847b637b01b
Check if the uint64_t pointer is aligned before using it. If unaligned,
go byte by byte. Unaligned pointer access is undefined on some archs and
flagged as such by ASAN.
Change-Id: I3afc80a2ddbc874a62d6930971493f8d461aa452
If the length of the string is zero, the pointer to the buffer may be
null. ASAN flags these as invalid/undefined, so don't do that.
Change-Id: Ic55498465c53a78e1bd44c42d1a60f9bd3336473