Locally generated 408 timeouts are now ignored to prevent premature registration teardown.
We only remove contacts on hard transport failures (local 503 or 430/410 responses), ensuring that
transient network or app-layer lag doesn't wipe our registration database
while the RFC 5626 Flow is still physically established.
FQDN resolution uses `getaddrinfo` with `AI_CANONNAME` and may cause DNS
lookup in some cases. If the DNS server is slow or unresponsive, the
logger initialization hangs until the system network timeout occurs.
Disable FQDN resolution and use local hostname `mHostname` for JSON CEE
logging by default.
A new compilation option `USE_FQDN_FOR_JSON_CEE_HOSTNAME` is introduced
to re-enable FQDN resolution upon Logger initialization if required.
- InviteSession
- add tracking of peer RequiresOptionTags and add getPeerRequiresOptionsTags method
- rename timerOptionSupported to sessionTimerSupportedLocalAndPeer for clarity
- define const Token for Symbols::Timer so we don't need to create one on every use
- add session timer headers to response even if far end doesn't support (non OPTIONs responses only)
- update resip stacks internal uses of Pidf to GenericPidfContents
- remove Pidf.hxx/cxx and tests from build
- leave files in place (for now) to allow use if still needed
- fixes ContentsFactory ambiguity over which Contents class to use when parsing
C++20 introduces support for comparison operator rewriting. In particular,
the compiler is now able to synthesize comparison operators with swapped
arguments, so e.g. for operator==(A, B) it would synthesize operator==(B, A).
This poses a problem for BranchParameter::operator==, which is declared
non-const and accepts a const BranchParameter& argument. The above rewriting
would synthesize a different operator== that is marked as const but accepts
a non-const BranchParameter& argument. Invoking comparison between two
non-const BranchParameter objects would therefore be ambiguous as the original
and the synthesized overloads would both equally match. Gcc 14 gratiously
accepts such code, albeit with a warning, but other compilers may reject it.
Fix this by marking the operator== as const.
C++20 deprecates implicit capture of this pointer by the [=] capture clause.
Compilers generate warnings about this. Explicitly specify this, where
needed.
Furthermore, in a few methods of TurnAsyncSocket, raw pointers were captured
in the callbacks passed to asio::dispatch. Since asio::dispatch may post the
callback to the IO thread, the captured pointer could become dangling when
the callback was invoked. Avoid this by capturing Data instead. To avoid an
extra copy, move the captured Data object into the TurnAsyncSocket class
members when the callback is invoked.
C++20 deprecates support for bitwise operations where the two arguments
have different enum types. Compilers generate warnings about this.
In Headers.cxx, commaHandling is used in bitwise operations with
ParserCategory::CommasAllowedOutputMulti. Since commaHandling is defined
as an unnamed enum in each class derived from ParserCategory, each
constant constitutes a distinct enum type. To avoid the warnings,
name the enum in ParserCategory and use that name to define commaHandling
constants.
In DumFeatureChain.cxx and DialogUsageManager.cxx, DumFeature::ProcessingResult
bit masks are tested using DumFeature::ProcessingResultMask bits, which
are two different enums. To avoid the warnings, cast the enums to
unsigned int (since these are bit masks).
C++20 deprecates operations other than reads and writes performed on
volatile variables. Compilers generate warnings about this.
In the Log class, touchCount was marked as volatile in attempt to emulate
atomics in C++03 (which was incorrect; atomicity was not guaranteed).
Replace it with std::atomic. Also change it to unsigned int to increase
chances of native support for atomic operations rather than emulation.
In testRandomThread, the volatile variables need not be marked as such
as the compiler is required to reload these variables across wait() calls
since a wait call unlocks and locks the mutex, which implies release and
acquire fences.
- don't assume OpenSSL Ex Data index 0 is available - query OpenSSL for available index
- use more modern and overflow safe API's in verifyCallback for extracting the certificate subject name
- add error log to RRDecorator::rollbackMessage if expected condition on mAddedRecordRoute is not true
- SipMessage - check mIsDecorated directly in rollbackOutboundDecorators to help avoid coding errors
- SipMessage::clearOutboundDecorators now rolls back decorators if needed before clearing them, which will also ensure mIsDecorated is reset to false
`config.h` defines macros required for correct compilation of
Resiprocate-related classes.
For example, it controls `std::string_view` support, but the header was
not previously installed, preventing users from including it.
This change installs the file so that client projects can use the same
configuration as the library.