Commit Graph

28953 Commits

Author SHA1 Message Date
zuul
8d4c188fda Merge "chan_sip: Remember SDP negotiation on SIP_CODEC_INBOUND." into 14 2017-01-09 08:45:49 -06:00
Joshua Colp
3e8d9a5b06 Merge "res_pjsip: Fix known compact header issues" into 14 2017-01-09 07:23:24 -06:00
George Joseph
846432013a pjproject_bundled: Fix compilation with MALLOC_DEBUG
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
2017-01-08 10:37:34 -06:00
zuul
c9825b26a9 Merge "res_rtp_asterisk.c: Fix uninitialized memory crash." into 14 2017-01-06 14:04:34 -06:00
zuul
06936fdf1d Merge "chan_rtp.c: Fix uninitialized memory crash." into 14 2017-01-06 13:51:04 -06:00
zuul
4bf7044332 Merge "res_rtp_asterisk.c: Initialize ourip passed to ast_find_ourip()." into 14 2017-01-06 13:51:01 -06:00
Joshua Colp
a52598093d res_pjsip_endpoint_identifier_ip: Add support for SRV lookups.
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
2017-01-06 09:00:16 -06:00
Joshua Colp
b1909a70a5 Merge "bridge_native_rtp.c: Minor code cleanups." into 14 2017-01-05 11:46:59 -06:00
zuul
e37db9feb6 Merge "res_pjsip_session: Access SIPDOMAIN via Dialplan." into 14 2017-01-05 10:01:06 -06:00
George Joseph
17902a70cf Merge "acl.c: Improve ast_ouraddrfor() diagnostic messages." into 14 2017-01-04 22:06:56 -06:00
George Joseph
5f87e161f6 Merge "bridge_native_rtp.c: Fix native rtp bridge data race." into 14 2017-01-04 22:04:49 -06:00
George Joseph
79d75a850a Merge "res_pjsip_refer: Handle compact Refer-To header." into 14 2017-01-04 16:26:57 -06:00
George Joseph
48f8dfd213 Merge "chan_pjsip: Use session for retrieving CHANNEL() information." into 14 2017-01-04 16:26:24 -06:00
Alexander Traud
f0eb3214e6 res_pjsip_session: Access SIPDOMAIN via Dialplan.
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
2017-01-04 07:13:12 -06:00
Alexander Traud
0b89c7c12e chan_sip: Remember SDP negotiation on SIP_CODEC_INBOUND.
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
2017-01-04 06:02:11 -06:00
George Joseph
cac644cf14 pjproject_bundled: Compile pjsua with max log level = 2
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
2017-01-03 15:02:34 -07:00
Joshua Colp
e40016e39f chan_pjsip: Use session for retrieving CHANNEL() information.
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
2017-01-03 05:46:58 -06:00
Joshua Elson
97f8703d85 res_pjsip: Fix known compact header issues
ASTERISK-26684 #close

Change-Id: Ifd7e401c45015119dd5e8421dbfe3afa6381744a
2016-12-31 20:00:37 -06:00
George Joseph
d534dc9df7 res_pjsip_refer: Handle compact Refer-To header.
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
2016-12-30 09:17:33 -06:00
Richard Mudgett
25f2e8b8f7 bridge_native_rtp.c: Minor code cleanups.
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
2016-12-23 14:11:16 -06:00
Richard Mudgett
bf23a46c75 bridge_native_rtp.c: Fix native rtp bridge data race.
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
2016-12-23 14:11:16 -06:00
Richard Mudgett
64edb4e05c res_rtp_asterisk.c: Fix uninitialized memory crash.
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
2016-12-22 12:24:03 -06:00
Richard Mudgett
e4d4d9b412 chan_rtp.c: Fix uninitialized memory crash.
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
2016-12-22 12:24:03 -06:00
Richard Mudgett
aa5be9842e res_rtp_asterisk.c: Initialize ourip passed to ast_find_ourip().
We access uninitialized memory when the 'ourip' parameter does not
have an initial guess to our IP address.

ASTERISK-26672

Change-Id: I35507ea1ad7455d2be188f6ccdd4add7bd150e15
2016-12-22 12:24:03 -06:00
Richard Mudgett
c70d908db7 acl.c: Improve ast_ouraddrfor() diagnostic messages.
* Made not generate strings unless they will actually be used.

ASTERISK-26672

Change-Id: I155fbe7fdff5ce47dfe5326f3baf5446849702c3
2016-12-22 12:24:03 -06:00
Richard Mudgett
4ecc3de00e res_rtp_asterisk.c: Fix off nominal memory leak.
Change-Id: I95b1088d11244a2edae6607c12fbf33b38658a75
2016-12-21 11:15:09 -06:00
Joshua Colp
67fd155c64 Merge "pjproject_bundled: Make build single threaded" into 14 2016-12-20 05:30:53 -06:00
Joshua Colp
da8ad88393 Merge "res_pjsip: Add/update ERROR msg if invalid URI." into 14 2016-12-20 05:30:22 -06:00
Joshua Colp
b7372e7a59 Merge "MESSAGE: Flush Message/ast_msg_queue channel alert pipe." into 14 2016-12-20 05:30:14 -06:00
George Joseph
ed830a7ebb Merge "autosupport: Add 'pjproject show buildopts'" into 14 2016-12-19 22:20:41 -06:00
Joshua Colp
3feb2a4b1c Merge "chan_dahdi.c: Fix bounds check regression." into 14 2016-12-19 19:37:04 -06:00
Joshua Colp
f5b7508923 Merge "chan_sip: Reorder unload_module to deal with stuck TCP threads." into 14 2016-12-19 17:23:56 -06:00
Martin Tomec
2840731d81 app_queue: Ensure member is removed from pending when hanging up.
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
2016-12-19 03:45:39 -06:00
George Joseph
c89ce1181c pjproject_bundled: Make build single threaded
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
2016-12-18 15:26:38 -06:00
Corey Farrell
767d569f76 chan_sip: Reorder unload_module to deal with stuck TCP threads.
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
2016-12-17 10:28:20 -06:00
David M. Lee
4fee903d93 configure: fix with-pjproject-bundled
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
2016-12-16 01:36:14 -06:00
Richard Mudgett
4986374297 autosupport: Add 'pjproject show buildopts'
Change-Id: I8aa55a7c3fb175235ddc7f85e9457d5102d06fa7
2016-12-15 13:27:44 -06:00
Richard Mudgett
0d3f6e903b chan_dahdi.c: Fix bounds check regression.
Caused by ASTERISK-25494

Change-Id: I1fc408c1a083745ff59da5c4113041bbfce54bcb
2016-12-14 14:24:07 -06:00
Richard Mudgett
b82ebf13af res_pjsip: Add/update ERROR msg if invalid URI.
ASTERISK-24499

Change-Id: Ie305153e47e922233b2ff24715e0e326e5fa3a6c
2016-12-14 11:37:17 -06:00
Richard Mudgett
c324e17d49 MESSAGE: Flush Message/ast_msg_queue channel alert pipe.
ASTERISK-25083

Change-Id: Id54baa57a8dbca84e29f28bcd2ffc0a5ac12d8b2
2016-12-14 11:37:17 -06:00
George Joseph
510acb2eff res_sorcery_memory_cache: Change an error to a debug message
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
2016-12-14 08:27:08 -06:00
George Joseph
f4551951ba pjproject_bundled: Retry download if previously saved tarball is bad
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
2016-12-09 08:16:28 -06:00
Joshua Colp
163dba946a Merge "res_pjsip: Fix 'A = B != C' kind." into 14 2016-12-09 05:33:41 -06:00
Joshua Colp
e5bf133882 Merge "Fix typo in chan_sip" into 14 2016-12-09 05:33:00 -06:00
Joshua Colp
5231dd5a12 Merge "Small code cleanup in chan_sip" into 14 2016-12-09 05:32:24 -06:00
zuul
377926bf3c Merge "chan_sip: Delete unneeded check" into 14 2016-12-09 03:25:11 -06:00
Joshua Colp
a2cc7bbdf4 Merge "res_pjsip_registrar: AMI Add RegistrationInboundContactStatuses command" into 14 2016-12-08 18:31:21 -06:00
Badalyan Vyacheslav
ec7d86c90f chan_sip: Delete unneeded check
P is always true. We check it before

Change-Id: Iee61cda002a9f61aee26b9f66c5f9b59e3389efb
2016-12-08 16:55:41 -06:00
Badalyan Vyacheslav
c15228ff84 Small code cleanup in chan_sip
The conditional expressions of the 'if' operators situated
alongside each other are identical.

Change-Id: I2cf7c317b106ec14440c7f1b5dcfbf03639f748a
2016-12-08 16:54:31 -06:00
Badalyan Vyacheslav
59457d39ef Fix typo in chan_sip
The conditional expressions of the 'if' operators
situated alongside each other are identical.

Change-Id: I652b6dcddb3be007e669a6aa8107edb31a1ddafb
2016-12-08 16:53:45 -06:00