When MALLOC_DEBUG was specified, make was failing. Immediately
remaking would work. The issues was in the ordering of the make
dependencies.
Change-Id: If6030b54fc693f3179f32bfd20c6b5d5f1b3f7cd
This change implements SRV support for the IP based endpoint
identifier module. All possible addresses through SRV are looked
up and added as matches. If no SRV records are available a
fallback to normal host resolution is done. If an IP address
is provided then no SRV lookup occurs.
This is configured using the "srv_lookups" option on the
identify section and defaults to "yes".
ASTERISK-26693
Change-Id: I6b641e275bf96629320efa8b479737062aed82ac
This feature was available in the SIP channel driver chan_sip. For example,
Asterisk is the outbound proxy and has to handle all SIP-URIs, even domains not
local to Asterisk. In that case, SIPDOMAIN is used in the Dialplan, to detect
and dial remote SIP-URIs. This change here sets the SIP destination domain of
an inbound call (SIPDOMAIN) in the SIP channel driver res_pjsip as well.
ASTERISK-26670 #close
Change-Id: I27c880dc404a3c1c6792e1ba3545475339577243
After a SIP_CODEC_INBOUND in the dialplan, do not continue with cached formats
but remember the joint format. Cached formats contain default parameters,
often create an empty fmtp line. However, a joint format might have passed
format_get_joint(.) in a res_format_attr_* module (like Opus Codec) and
contain the resulting format parameters from a SDP negotiation.
ASTERISK-26691 #close
Change-Id: I35712d98a793d4c3efdd156cec57deab9014b1dc
A while back, we changed config_site.h to set PJ_LOG_MAX_LEVEL = 6.
This allowed us to control the log level better from inside Asterisk.
An unfortunate side effect of this was that the pjsua binary and
python bindings were also compiled with log level set to 6 so whenever
a testsuite test that uses pjsua runs, it spits out 6795 lines of
debug in an instant even before the test starts. I believe this
overruns the Jenkins capture buffer and prevents the test from
properly terminating. In turn, this results in the testsuite just
hanging until the job is killed. It's more frequent on the higher
end agents because they can spit out the messages faster.
Unfortunately, the messages are all spit out before we have control
of the python pj.Lib instance where we can set logging levels so the
only alternative was to actually compile pjsua and _pjsua.so with an
overridden PJ_LOG_MAX_LEVEL. Although defining a lower max level was
done in the Makefile, the define in config_site.h had to be wrapped
with "#ifndef" so the change would take effect.
Change-Id: I2af9e7d48dde1927279c586c9c725d868fe6f3ff
The CHANNEL() dialplan function implementation for PJSIP allows
querying of PJSIP specific information. This used the channel
passed in to get the PJSIP session and associated information.
It is possible for this channel to be masqueraded and end
up as a different channel type by the time the information
request is actually acted upon.
This change retrieves the PJSIP session safely and accesses
data from it (including channel). This provides a guarantee
that the session and channel will not be altered when the
request is being acted upon.
ASTERISK-26673
Change-Id: I335e12b89e1820cafdd92b3e7526b8ba649eb7e6
refer_incoming_refer_request needed to look for the "r" header as well
as the "Refer-To" header.
ASTERISK-26655 #close
patches:
refer_compact_fix.diff submitted by JoshE (license 6075)
Change-Id: I610410a99b02427ea5db887aeb454d5f12c2259f
In native_rtp_bridge_compatible_check()
* Made one variable declaration per line.
* Extracted if test assignment to make the test easier to see.
* Made long if tests easier to see the combinatorial logic.
* Added bridge id to a couple debug messages.
Change-Id: I65bc5732aa7c9a2537f062f106fbea711cf2daad
native_rtp_bridge_compatible() didn't lock the bridge channels before
checking the channels for native bridging ability. As a result, one of
the channel's native format capabilities structure got replaced out from
under the native bridge check. Use of a stale pointer to freed memory
causes bad things to happen.
MALLOC_DEBUG, DO_CRASH, and the
tests/channels/pjsip/transfers/blind_transfer/caller_direct_media
testsuite test caught this.
* Add missing channel locking in native_rtp_bridge_compatible().
Change-Id: If25fdb3ac8e85563c4857fb8216b3d9dc3d0fa53
ast_rtp_remote_address_set() could pass an uninitialized 'us' parameter to
ast_ouraddrfor(). If ast_ouraddrfor() returns an error then the 'us'
parameter may not get initialized. Thus when the code tries to save the
'us' parameter to the local address we could try to copy a ridiculous
sized memory buffer and segfault.
* Made pass an initialized 'us' parameter to ast_ouraddrfor().
* Optimized out the 'us' struct variable.
ASTERISK-26672 #close
Change-Id: I4acea5dcdf0813da2c7d3e11c2d6067d160d17dc
unicast_rtp_request() could pass an uninitialized 'us' parameter to
ast_ouraddrfor(). If ast_ouraddrfor() returns an error then the 'us'
parameter may not get initialized. Thus when the code tries to save the
'us' parameter to the local address we could try to copy a ridiculous
sized memory buffer and segfault.
* Made pass an initialized 'us' parameter to ast_ouraddrfor() and abort
the UnicastRTP channel request if it fails.
ASTERISK-26672
Change-Id: I1ef7a7c09f4da4f15dcb6de660d2bcac5f2a95c0
We access uninitialized memory when the 'ourip' parameter does not
have an initial guess to our IP address.
ASTERISK-26672
Change-Id: I35507ea1ad7455d2be188f6ccdd4add7bd150e15
In some cases member is added to pending_members, and the channel
is hung up before any extension state change. So the member would
stay in pending_members forever. So when we call do_hang, we
should also remove member from pending.
ASTERISK-26621 #close
Change-Id: Iae476b5c06481db18ebe0fa594b3e80fdc9a7d54
There were just too many issues in various environments with
multi threaded building of pjproject. It doesn't really speed
things up anyway since asterisk is already being compiled in
parallel.
Change-Id: Ie5648fb91bb89b4224b6bf43a0daa1af793c4ce1
In some situations TCP threads may become frozen. This creates the
possibility that Asterisk could segfault if they become unfrozen after
chan_sip has been dlclose'd. This reorders the unload_module process to
allow abort if threads do not exit within 5 seconds.
High level order as follows:
1) Unregister from the core to stop new requests.
2) Signal threads to stop
3) Clear config based tables (but do not free the table itself).
4) Verify that threads have shutdown, cancel unload if not.
5) Clean all remaining resources.
ASTERISK-26586
Change-Id: Ie23692041d838fbd35ece61868f4c640960ff882
The AC_ARG_WITH macro's shell variable is withval; not enableval. Purely
coincidentally, the option would work when --enable-dev-mode is given.
Also fixed a portability problem with bootstrap.sh, since -printf is not
a portable option for find.
Change-Id: I0f0e5b1a934b5af5737713834361e9c95b96b376
When a sorcery user calls ast_sorcery_delete on an object that
may have already expired from the cache, res_sorcery_memory_cache
spits out an ERROR. Since this can happen frequently and validly when
an inbound registration expires after the cache entry expired, the
errors are unnecessary and misleading. Changed to a debug/1.
Change-Id: Idf3a67038c16e3da814cf612ff4d6d18ad29ecd7
If a tarball is corrupted during download, the makefile will attempt to
download it again. If the tarball somehow gets corrupted after it's
downloaded however, the makefile was just failing. We now
retry the download.
ASTERISK-26653 #close
Change-Id: I1b24d454852d80186f60c5a65dc4624ea8a1c359