asterisk/asterisk.git
4 years agoapps/app_voicemail: Trigger MWI notification with MixMonitor m() option
Matthew Jordan [Thu, 22 Jan 2015 14:23:41 +0000 (14:23 +0000)]
apps/app_voicemail: Trigger MWI notification with MixMonitor m() option

The MixMonitor m() option allows a recording to be pushed to a specific
voicemail mailbox. If the message is delivered to the mailbox's INBOX, however,
no MWI notification is currently raised.

This patch corrects the issue by properly calling notify_new_state from the
msg_create_from_file function. This will cause MWI to be triggered if the
message was placed in the mailbox's INBOX.

ASTERISK-24709 #close
Reported by: Gareth Palmer
patches:
  app_voicemail-430919.patch uploaded by Gareth Palmer (License 5169)
........

Merged revisions 430920 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 430921 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430922 65c4cc65-6c06-0410-ace0-fbb531ad65f3

4 years agores_pjsip_outbound_registration.c: Move unref to a better place.
Richard Mudgett [Wed, 21 Jan 2015 21:57:45 +0000 (21:57 +0000)]
res_pjsip_outbound_registration.c: Move unref to a better place.

Move an unconditional unref of client_state so it doesn't look like it
could be used after the last ref has destroyed it.
........

Merged revisions 430902 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430903 65c4cc65-6c06-0410-ace0-fbb531ad65f3

4 years agochannels/chan_sip: Fix registration leak during reload
Matthew Jordan [Wed, 21 Jan 2015 13:36:52 +0000 (13:36 +0000)]
channels/chan_sip: Fix registration leak during reload

When the SIP registrations were migrated to using ao2 in what was then trunk,
the explicit destruction of the registrations on module reload was removed and
not replaced with an ao2 equivalent. Debugging done by Stefan Engström, the
issue reporter, on ASTERISK-24673 confirmed that the reference in the
registry_list container was being leaked.

Since the purpose of cleanup_all_regs is to prep a registration for
destruction, this function now calls an ao2_callback function callback with the
OBJ_MULTIPLE | OBJ_NODATA | OBJ_UNLINK flags used to remove the registrations.
This cleans up each registration, and also removes it from the registration
container registry_list.

Review: https://reviewboard.asterisk.org/r/4355/

ASTERISK-24640 #close
Reported by: Max Man

ASTERISK-24673 #close
Reported by: Stefan Engström
Tested by: Stefan Engström
........

Merged revisions 430864 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430866 65c4cc65-6c06-0410-ace0-fbb531ad65f3

4 years agoAMI: Add documentation for the missing Cdr/CEL events.
Matthew Jordan [Wed, 21 Jan 2015 13:27:55 +0000 (13:27 +0000)]
AMI: Add documentation for the missing Cdr/CEL events.

This patch adds AMI event documentation for the Cdr and CEL AMI events.

Note that while these events do share fields with each other and with other
channel related events, they do not contain all of the fields in a standard
channel snapshot, nor is the description of the fields identical. As such,
the patch opts for documentation for each field, for each event.

Review: https://reviewboard.asterisk.org/r/4350/

ASTERISK-24671 #close
Reported by: Dan Jenkins
........

Merged revisions 430862 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430863 65c4cc65-6c06-0410-ace0-fbb531ad65f3

4 years agoapps/app_dial: Don't publish DialEnd twice on unexpected GoSub/Macro values
Matthew Jordan [Wed, 21 Jan 2015 13:12:04 +0000 (13:12 +0000)]
apps/app_dial: Don't publish DialEnd twice on unexpected GoSub/Macro values

The Dial application has some interesting options with the mid-call Macro (M)
and GoSub (U) options. If the MACRO_RESULT/GOSUB_RESULT returns specific
values, the Dial application will take some action upon the channels involved
in the dial operation (such as hanging up a particular party, etc.) The Dial
application ensures that a Stasis message is published in the event that
MACRO_RESULT/GOSUB_RESULT returns a value that kills the dial operation, so
that there is a corresponding DialEnd event published in AMI/ARI for the
DialBegin event that preceeded it.

A bug exists where that same DialEnd event will be published on Stasis even if
the value returned in MACRO_RESULT/GOSUB_RESULT is not one that the Dial
application cares about. This causes two DialEnd events to be published - one
with the MACRO_RESULT/GOSUB_RESULT and another with "ANSWERED" - which is all
sorts of wrong.

This patch fixes the bug by ensuring that we only publish a DialEnd message to
Stasis if the Dial application's mid-call Macro/GoSub returns something that
Dial cares about.

Review: https://reviewboard.asterisk.org/r/4336

ASTERISK-24682 #close
Reported by: Matt Jordan
........

Merged revisions 430842 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430844 65c4cc65-6c06-0410-ace0-fbb531ad65f3

4 years agomain/rtp_engine: Format NTP timestamps as unsigned longs
Matthew Jordan [Wed, 21 Jan 2015 13:06:06 +0000 (13:06 +0000)]
main/rtp_engine: Format NTP timestamps as unsigned longs

When the RTCP reports are created, the NTP timestamps are stored as strings,
as JSON does not have an integer type long enough to store the value. However,
on 32-bit systems, a signed long may overflow for some portion of the
timestamp.

This patch corrects the overflow by formatting the timestamps as unsigned
longs.
........

Merged revisions 430840 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430841 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoARI: Fixed crash that occurred when updating a bridge when the optional query paramet...
Ashley Sanders [Tue, 20 Jan 2015 17:15:54 +0000 (17:15 +0000)]
ARI: Fixed crash that occurred when updating a bridge when the optional query parameter 'name' was not supplied.

Prior to this changeset, posting to the: /ari/bridges/{bridgeId} endpoint without specifying a value for the [name] query parameter, would crash Asterisk if the bridge you are attempting to create (or update) had the same ID as an existing bridge. The internal mechanism of the POST operation interpreted a null value for name, thus resulting in an error condition that crashed Asterisk.

ASTERISK-24560 #close
Reported By: Kinsey Moore

Review: https://reviewboard.asterisk.org/r/4349/
........

Merged revisions 430818 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430820 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoCHANNEL(peer), chan_iax2, res_fax, SNMP agent: Fix deadlock from reaching across...
Richard Mudgett [Tue, 20 Jan 2015 16:59:30 +0000 (16:59 +0000)]
CHANNEL(peer), chan_iax2, res_fax, SNMP agent: Fix deadlock from reaching across a bridge.

Calling ast_channel_bridge_peer() cannot be done while holding any channel
locks.  The reported issue hit the deadlock in chan_iax2, but an audit of
the ast_channel_bridge_peer() calls found three more locations where the
same deadlock can occur.

* Made CHANNEL(peer), res_fax, and the SNMP agent not call
ast_channel_bridge_peer() with any channel locked.  For CHANNEL(peer) I
had to rework the logic to not hold the channel lock.

* Made chan_iax2 no longer call ast_channel_bridge_peer().  It was done
for legacy reasons that no longer apply.

* Removed the iax.conf forcejitterbuffer option.  It is now always enabled
when the jitterbuffer option is enabled.  If you put a jitter buffer on a
channel it will be on the channel.

ASTERISK-24600 #close
Reported by: Jeff Collell

Review: https://reviewboard.asterisk.org/r/4342/
........

Merged revisions 430817 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430819 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agocontrib/scripts/install_prereq: Don't install 32-bit packages on 64-bit hosts
Matthew Jordan [Tue, 20 Jan 2015 02:41:09 +0000 (02:41 +0000)]
contrib/scripts/install_prereq: Don't install 32-bit packages on 64-bit hosts

On Debian based systems, the install_prereq tool uses a search command on
Debian that results in selecting both 64-bit and 32-bit packages. Besides the
waste of disk space, this can actually cause aptitude use 100% of memory on a
VM with 1GB of RAM as it tried to work out all of the 32-bit package
dependencies.

This patch filters out the 32-bit packages on a 64-bit machine, and leaves
32-bit machines alone.

ASTERISK-24048 #close
Reported by: Ben Klang
Tested by: Ben Klang, Matt Jordan
patches:
  install_prereq_64-bit_compat.patch uploaded by Ben Klang (License 5876)
........

Merged revisions 430798 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 430799 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430800 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoapp_voicemail: Temp message left after review/hangup with ODBC/IMAP backend
Matthew Jordan [Tue, 20 Jan 2015 02:33:24 +0000 (02:33 +0000)]
app_voicemail: Temp message left after review/hangup with ODBC/IMAP backend

When using ODBC or IMAP storage, temporary files created on the file system
must be disposed of using the DISPOSE macro. The DELETE macro will map to a
deletion function for the backend storage, but does not clean up any local
files created as a result of the operation.

When using voicemail with the operator and review options enabled, pressing
0 to enter the menu, followed by 1 to save the message, followed by any
other DTMF press to delete the message, will result in the temporary file
lingering on the file system.

This patch properly calls DISPOSE after the DELETE. This causes the local
file to be disposed of.

ASTERISK-24288 #close
Reported by: LEI FU
patches:
  voicemail_odbc_review_fix.diff uploaded by LEI FU (License 6640)
........

Merged revisions 430795 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 430796 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430797 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoCall extension state callbacks at hint creation.
Mark Michelson [Mon, 19 Jan 2015 18:15:03 +0000 (18:15 +0000)]
Call extension state callbacks at hint creation.

When a hint gets created, any subsequent device or presence
state changes result in extension status events getting sent
out to interested parties. However, at the time of hint creation,
no such event gets sent out, so watchers of extension state are
potentially left in the dark until the first state change after
hint creation.

Patch contributed by John Hardin (License #6512)
........

Merged revisions 430776 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430777 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_pjsip / res_pjsip_multihomed: Use the correct transport and addressing informatio...
Joshua Colp [Mon, 19 Jan 2015 13:19:11 +0000 (13:19 +0000)]
res_pjsip / res_pjsip_multihomed: Use the correct transport and addressing information on UAS sessions.

The first thing this patch fixes is UAS dialogs. Previously if a transport was
configured on an endpoint and an inbound session was created there was no guarantee
that requests sent on the dialog would use the correct transport and address
information. This has now been fixed so an explicitly configured transport
is taken into account.

The second thing this patch fixes is res_pjsip_multihomed. The res_pjsip_multihomed
module attempts to determine what transport a message should go out on and what
addressing information should go into the message itself. In a scenario where
multiple transports exist bound to the same IP address but a different port the
code would incorrectly alter the transport and change the message to the wrong
transport. This change makes the res_pjsip_multihomed module smarter so it will
only change the transport and address information in the message when it is
possible and makes sense.

ASTERISK-24615 #close
Reported by: David Justl

Review: https://reviewboard.asterisk.org/r/4331/
........

Merged revisions 430755 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430756 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoREVERTING res_pjsip: make it unloadable
Kevin Harwell [Sat, 17 Jan 2015 00:35:59 +0000 (00:35 +0000)]
REVERTING res_pjsip: make it unloadable

Due to the original patch causing memory corruptions the patch is
being removed until the problem can be resolved.
........

Merged revisions 430734 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430735 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoChange PJProject version requirement for ca_list_path transport option in CHANGES...
Mark Michelson [Fri, 16 Jan 2015 22:14:38 +0000 (22:14 +0000)]
Change PJProject version requirement for ca_list_path transport option in CHANGES file.
........

Merged revisions 430716 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430717 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoFix problem where a hung channel could occur on a failed blind transfer.
Mark Michelson [Fri, 16 Jan 2015 22:13:23 +0000 (22:13 +0000)]
Fix problem where a hung channel could occur on a failed blind transfer.

Different clients react differently to being told that a blind transfer
has failed. Some will simply send a BYE and be done with it. Others will
attempt to reinvite themselves back onto the call.

In the latter case, we were creating a new channel and then leaving it to
sit forever doing nothing. With this code change, that new channel will
not be created and the dialog with the transferring channel will be cleaned
up properly.

ASTERISK-24624 #close
Reported by Zane Conkle

Review: https://reviewboard.asterisk.org/r/4339
........

Merged revisions 430714 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430715 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoAdd support for the ca_list_path option for PJSIP transports.
Mark Michelson [Fri, 16 Jan 2015 21:46:09 +0000 (21:46 +0000)]
Add support for the ca_list_path option for PJSIP transports.

This allows for a path to be specified that has a collection of CA
certificates in it.

ASTERISK-24575 #close
Reported by cloos
Patches:
pj-ca-path-trunk.diff uploaded by cloos (License #5956)

Review: https://reviewboard.asterisk.org/r/4344
........

Merged revisions 430709 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430713 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_fax.c, res_fax_spandsp.c: Remove redundant locking.
Richard Mudgett [Thu, 15 Jan 2015 17:36:37 +0000 (17:36 +0000)]
res_fax.c, res_fax_spandsp.c: Remove redundant locking.

When FAX was developed, apparently the faxregistry.container used to be a
linked list that was converted to an ao2 container.  Some of the
replacement ao2 container operations still had explicit lock/unlocks
around them.

Three off nominal code paths in res_fax.c and res_fax_spandsp.c unlock the
channel even though the routine did not lock the channel and other code
paths in the routine do not unlock the channel.

Review: https://reviewboard.asterisk.org/r/4340/
........

Merged revisions 430687 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430688 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_fax.c, res_fax_spandsp.c: Fix some curlies on the end of function definitions.
Richard Mudgett [Thu, 15 Jan 2015 17:28:51 +0000 (17:28 +0000)]
res_fax.c, res_fax_spandsp.c: Fix some curlies on the end of function definitions.
........

Merged revisions 430685 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430686 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_pjsip_outbound_registration: Fix race condition when reloading and listing regist...
Joshua Colp [Thu, 15 Jan 2015 12:10:22 +0000 (12:10 +0000)]
res_pjsip_outbound_registration: Fix race condition when reloading and listing registrations.

Due to the split of outbound registration state from configuration it is possible during
a reload for a "pjsip show registrations" CLI command to be executed which gets an older
snapshot of the configuration. This configuration may include outbound registrations which
have been removed due to a reload operation occurring at the same time. The code for
printing the outbound registration did not take this into account but now it does.

AST-1506 #close

Review: https://reviewboard.asterisk.org/r/4338/
........

Merged revisions 430664 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430665 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoconfigure: If cross-compiling, assume we have working semaphores
Matthew Jordan [Thu, 15 Jan 2015 02:19:49 +0000 (02:19 +0000)]
configure: If cross-compiling, assume we have working semaphores

The Asterisk 13 configure.ac checks for HAS_WORKING_SEMAPHORE but does not have
an option for cross-compiling so it fails with an exit. Since we're cross-
compiling, we can't exactly go looking for the header. The semaphore.h header
is relatively common:
* It's part of the POSIX standard
* It's part of GNU C Library
As such, we assume that it will be present when cross-compiling.

As such, this patch defaults "HAS_WORKING_SEMAPHORE" to "1" if cross-compiling
is detected.

If you're cross-compiling to a platform that doesn't support this, then make
sure you re-define this to 0.

ASTERISK-24663 #close
Reported by: abelbeck
patches:
  asterisk-13-anonymous-semaphores.patch uploaded by abelbeck (License 5903)
........

Merged revisions 430646 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430647 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_pjsip: make it unloadable
Kevin Harwell [Wed, 14 Jan 2015 23:15:23 +0000 (23:15 +0000)]
res_pjsip: make it unloadable

The res_pjsip module was previously unloadable. With this patch it can now
be unloaded.

This patch is based off the original patch on the issue (listed below) by Corey
Farrell with a few modifications. Namely, removed a few changes not required to
make the module unloadable and also fixed a bug that would cause asterisk to
crash on unloading.

This patch is the first step (should hopefully be followed by another/others at
some point) in allowing res_pjsip and the modules that depend on it to be
unloadable. At this time, res_pjsip and some of the modules that depend on
res_pjsip cannot be unloaded without causing problems of some sort.

The goal of this patch is to get res_pjsip and only res_pjsip to be able to
unload successfully and/or shutdown without incident (crashes, leaks, etc...).
Other dependent modules may still cause problems on unload.

Basically made sure, with the patch applied, that res_pjsip (with no other
dependent modules loaded) could be succesfully unloaded and Asterisk could
shutdown without any leaks or crashes that pertained directly to res_pjsip.

ASTERISK-24485 #close
Reported by: Corey Farrell
Review: https://reviewboard.asterisk.org/r/4311/
patches:
  pjsip_unload-broken-r1.patch submitted by Corey Farrell (license 5909)
........

Merged revisions 430628 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430629 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoPrevent slow graceful shutdown when outbound publications never started.
Mark Michelson [Wed, 14 Jan 2015 20:39:01 +0000 (20:39 +0000)]
Prevent slow graceful shutdown when outbound publications never started.

The code was missing the case for explicitly destroying an outbound publication
when Asterisk had never actually published anything. The result was that Asterisk
would hang for a while on a graceful shutdown.

With this change, the case is taken into account, and on a graceful shutdown, these
publications are destroyed without the need to actually send a PUBLISH request.

ASTERISK-24655 #close
Reported by Kevin Harwell

Review: https://reviewboard.asterisk.org/r/4325
........

Merged revisions 430608 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430609 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agobuild_tools/mkpkgconfig: Fix Cflags concatenation error in asterisk.pc
Matthew Jordan [Wed, 14 Jan 2015 15:40:31 +0000 (15:40 +0000)]
build_tools/mkpkgconfig: Fix Cflags concatenation error in asterisk.pc

The mkpkgconfig script incorrectly concatenates Cflags options together. As an
example, the following:
Cflags: -I/usr/include/libxml2 -g3

Is instead generated as:
Cflags: -I/usr/include/libxml2-g3

This patch corrects the generation of Cflags in mkpkgconfig such that the
Cflags options are output correctly.

Review: https://reviewboard.asterisk.org/r/3707/

ASTERISK-23991 #close
Reported by: Diederik de Groot
patches:
  fix_mkpkgconfig.diff uploaded by Diederik de Groot (License 6600)
........

Merged revisions 430589 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 430590 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430591 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoapp_macro: Don't restore the calling location on a channel redirect.
Richard Mudgett [Tue, 13 Jan 2015 18:17:51 +0000 (18:17 +0000)]
app_macro: Don't restore the calling location on a channel redirect.

v11: If a channel redirect to a macro exten of a macro that is active
happens, the redirect location doesn't get executed.  Instead the original
macro location is restored and gets reexecuted.

v13: An additional effect happens if a parked call times out to an
extension in the macro that parked the call then the macro is reexecuted
instead of the expected park return location.

* Made not restore the macro calling location on an
AST_SOFTHANGUP_ASYNCGOTO.

* Increased the locked channel range when setting up the macro execution
environment to cover things that should be done while the channel is
locked.

* Removed unnecessary NULL tests before calling ast_free() in
_macro_exec().

ASTERISK-23850 #close
Reported by: Andrew Nagy

Review: https://reviewboard.asterisk.org/r/4292/
........

Merged revisions 430564 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 430565 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430567 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agochan_pjsip: Add configure check for 'pjsip_get_dest_info' function.
Joshua Colp [Tue, 13 Jan 2015 12:09:45 +0000 (12:09 +0000)]
chan_pjsip: Add configure check for 'pjsip_get_dest_info' function.

The 'pjsip_get_dest_info' function is used to determine if the signaling transport
of the dialog is secure or not. This function was added in PJSIP 2.3 and does not
exist in earlier versions.

This configure check allows Asterisk to build and run with older versions at the
loss of the 'secure' argument for the PJSIP CHANNEL dialplan function. Usage of
this argument will require upgrading to PJSIP 2.3.

ASTERISK-24665 #close
Reported by: Mark Michelson

Review: https://reviewboard.asterisk.org/r/4329/
........

Merged revisions 430546 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430547 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoAMI: Revert non-backwards compatible changes from earlier commit.
Richard Mudgett [Mon, 12 Jan 2015 19:13:03 +0000 (19:13 +0000)]
AMI: Revert non-backwards compatible changes from earlier commit.

* Reverted the change to astman_send_listack() to not use the listflag
parameter and always set the value to "Start" so the start capitalization
is consistent.  Unfortunately changing the case of a returned value is not
a backward compatible change so for now FAXSessions is going to have to
remain inconsistent with all of the other AMI list actions.

* Reverted the minor protocol error fix in action_getconfig() when no
requested categories are found.  Each line needs to be formatted as
"Header: text".

Caught by the testsuite.

ASTERISK-24049
........

Merged revisions 430528 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430529 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoconfigs/samples/features.conf.sample: Document attended transfer DTMF options
Matthew Jordan [Mon, 12 Jan 2015 18:28:50 +0000 (18:28 +0000)]
configs/samples/features.conf.sample: Document attended transfer DTMF options

The sample config was missing the configuration options for DTMF attended
transfer completion scenarios. The configuration options 'atxferabort',
'atxfercomplete', 'atxferthreeway', and 'atxferswap' are now documented in the
appropriate configuration file.

ASTERISK-24678 #close
Reported by: Niklas Larsson
patches:
  features.conf.sample.diff uploaded by Niklas Larsson (License 5068)
........

Merged revisions 430526 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430527 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoRevert -r430452 It needs to be redone for the next major AMI version change instead.
Richard Mudgett [Mon, 12 Jan 2015 18:09:27 +0000 (18:09 +0000)]
Revert -r430452 It needs to be redone for the next major AMI version change instead.

ASTERISK-24049

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430509 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agomain/syslog: Allow dynamic logs, such as security events, to log to the syslog
Matthew Jordan [Mon, 12 Jan 2015 18:01:46 +0000 (18:01 +0000)]
main/syslog: Allow dynamic logs, such as security events, to log to the syslog

The security event log uses a dynamic log level (SECURITY) that is registered
with the Asterisk logging core. Unfortunately, the syslog would ignore log
statements that had a dynamic log level associated with them. Because the
syslog cannot handle ad hoc dynamic log levels, this patch treats any dynamic
log entries sent to the syslog as logs with a level of NOTICE.

ASTERISK-20744 #close
Reported by: Michael Keuter
Tested by: Michael L. Young, Jacek Konieczny
patches:
  asterisk-20744-syslog-dynamic-logging_trunk.diff uploaded by Michael L. Young (license 5026)
........

Merged revisions 430506 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 430507 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430508 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agofuncs/func_curl: Fix memory leak when CURLOPT channel datastore is destroyed
Matthew Jordan [Mon, 12 Jan 2015 15:18:24 +0000 (15:18 +0000)]
funcs/func_curl: Fix memory leak when CURLOPT channel datastore is destroyed

When the channel datastore associated with the usage of CURLOPT on a specific
channel is freed, the underlying structure holding the list of options is not
disposed of. This patch properly frees the structure in the datastore .destroy
callback.

ASTERISK-24672 #close
Reported by: Kristian Hogh
patches:
  func_curl-memory-leak.diff uploaded by Kristian Hogh (License 6639)
........

Merged revisions 430487 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 430488 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430489 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agosip_to_pjsip: improve ability to parse input files
Scott Griepentrog [Fri, 9 Jan 2015 22:09:04 +0000 (22:09 +0000)]
sip_to_pjsip: improve ability to parse input files

General improvements to SIP to PJSIP conversion utility:

1) track default section of input file to allow parsing
   an include file that doesn't specify a [section]

2) informatively handle case of assignment without [section]

3) correctly handle getting sections from included files
   - [section]'s are inherited by included file

4) provide null string as default transport bind ip

5) gracefully handle missing portions of registration string

6) denote steps of operation during conversion and confirm
   top level files as a convenience

ASTERISK-24474 #close
Review: https://reviewboard.asterisk.org/r/4280/
Reported by: John Kiniston
........

Merged revisions 430469 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430470 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoapp_bridge: return to the next dialplan priority
Scott Griepentrog [Fri, 9 Jan 2015 21:45:10 +0000 (21:45 +0000)]
app_bridge: return to the next dialplan priority

When app_bridge grabs a channel and puts it into
a bridge, the channel should then continue where
it left off in the dialplan after the bridge has
ended.   Although it stores the current dialplan
location as an after bridge goto on the channel,
it was executing the same priority again instead
of going to the next priority.   By swapping the
"specific" version of bridge_set_after_goto with
bridge_set_after_go_on, the next priority in the
dialplan is executed instead.

ASTERISK-24637 #close
Review: https://reviewboard.asterisk.org/r/4322/
Reported by: John Bigelow
........

Merged revisions 430467 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430468 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoAMI: Remove no longer used parameter from astman_send_listack().
Richard Mudgett [Fri, 9 Jan 2015 18:53:49 +0000 (18:53 +0000)]
AMI: Remove no longer used parameter from astman_send_listack().

Follow-up issue to -r430435 from reviewboard review.

ASTERISK-24049
Review: https://reviewboard.asterisk.org/r/4315/

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430452 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoAMI: Make AMI actions that generate event lists consistent.
Richard Mudgett [Fri, 9 Jan 2015 18:16:54 +0000 (18:16 +0000)]
AMI: Make AMI actions that generate event lists consistent.

* Made the following AMI actions use list API calls for consistency:
Agents
BridgeInfo
BridgeList
BridgeTechnologyList
ConfbridgeLIst
ConfbridgeLIstRooms
CoreShowChannels
DAHDIShowChannels
DBGet
DeviceStateList
ExtensionStateList
FAXSessions
Hangup
IAXpeerlist
IAXpeers
IAXregistry
MeetmeList
MeetmeListRooms
MWIGet
ParkedCalls
Parkinglots
PJSIPShowEndpoint
PJSIPShowEndpoints
PJSIPShowRegistrationsInbound
PJSIPShowRegistrationsOutbound
PJSIPShowResourceLists
PJSIPShowSubscriptionsInbound
PJSIPShowSubscriptionsOutbound
PresenceStateList
PRIShowSpans
QueueStatus
QueueSummary
ShowDialPlan
SIPpeers
SIPpeerstatus
SIPshowregistry
SKINNYdevices
SKINNYlines
Status
VoicemailUsersList

* Incremented the AMI version to 2.7.0.

* Changed astman_send_listack() to not use the listflag parameter and
always set the value to "Start" so the start capitalization is consistent.
i.e., The FAXSessions used "Start" while the rest of the system used
"start".  The corresponding complete event always used "Complete".

* Fixed ami_show_resource_lists() "PJSIPShowResourceLists" to output the
AMI ActionID for all of its list events.

* Fixed off-nominal AMI protocol error in manager_bridge_info(),
manager_parking_status_single_lot(), and
manager_parking_status_all_lots().  Use of astman_send_error() after
responding to the original AMI action request violates the action response
pattern by sending two responses.

* Fixed minor protocol error in action_getconfig() when no requested
categories are found.  Each line needs to be formatted as "Header: text".

* Fixed off-nominal memory leak in manager_build_parked_call_string().

* Eliminated unnecessary use of RAII_VAR() in ami_subscription_detail().

ASTERISK-24049 #close
Reported by: Jonathan Rose

Review: https://reviewboard.asterisk.org/r/4315/
........

Merged revisions 430434 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430435 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_fax: Add T.38 negotiation timeout option
Kinsey Moore [Fri, 9 Jan 2015 14:53:09 +0000 (14:53 +0000)]
res_fax: Add T.38 negotiation timeout option

This change makes the T.38 negotiation timeout configurable via
't38timeout' in res_fax.conf or FAXOPT(t38timeout). It was previously
hard coded to be 5000 milliseconds.

This change also handles T.38 switch failures by aborting the fax since
in the case where this can happen, both sides have agreed to switch to
T.38 and Asterisk is unable to do so.

Review: https://reviewboard.asterisk.org/r/4320/
........

Merged revisions 430415 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 430416 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430417 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_pjsip_pubsub: Fix persistent subscriptions not surviving graceful shutdown
George Joseph [Thu, 8 Jan 2015 21:41:02 +0000 (21:41 +0000)]
res_pjsip_pubsub: Fix persistent subscriptions not surviving graceful shutdown

If you do a 'core (shutdown|restart) graceful' persistent subscriptions won't
survive.  If you do a 'core (shutdown|restart) now' or asterisk terminates for
some reason, they do.  Here's why...

When asterisk shuts down gracefully, it sends a 'NOTIFY/terminated' to
subscribers for each subscription.  This not only tells the subscribers that the
dialog/state machine is done, it also frees the last reference to the
subscription tree which causes the persistent subscription to get deleted from
astdb.  When asterisk restarts, nothing's left.  Just preventing the delete from
astdb doesn't work because we already told the subscriber to terminate the
dialog so we can't restart it even if it was still in astdb.  Everything works
OK if asterisk terminates unexpectedly because we never send the 'terminated'
message so on restart, the subscription is still in astdb and the subscriber is
none the wiser.

This patch suppresses the sending of 'NOTIFY/terminated' on shutdown for
persistent connections.

Tested-by: George Joseph

Review: https://reviewboard.asterisk.org/r/4318/
........

Merged revisions 430397 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430398 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_pjsip_outbound_registration: Fix reference leak.
George Joseph [Thu, 8 Jan 2015 21:38:26 +0000 (21:38 +0000)]
res_pjsip_outbound_registration: Fix reference leak.

Every time a registration started, sip_outbound_registration_response_cb bumps
the ref count on client_state then pushes a handle_registration_response task.
handle_registration_response never unreffed it though.  So every time a
registration goes out, the ref count goes up by one.

This patch adds the unreffs to handle_registration_response.

Tested-by: George Joseph

Review: https://reviewboard.asterisk.org/r/4303/
........

Merged revisions 430395 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430396 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_pjsip_outbound_registration: Fix several reload issues
George Joseph [Thu, 8 Jan 2015 17:51:36 +0000 (17:51 +0000)]
res_pjsip_outbound_registration: Fix several reload issues

There are 2 issues with reloading registrations...

1.  The 'can_reuse_registration' test wasn't considering the intervals or
expiration in its determination of whether a registration changed or not so if
you changed any of the intervals or the expiration and reloaded, the object
would get reloaded but the actual timers wouldn't change.
can_reuse_registration now does a sorcery diff on the old and new objects
instead of discretely testing certain fields.  Now if you change expiration for
instance, and reload, the timer is updated and re-registration will occur on the
new value.

2.  If you mung up your password on an outbound registration you get a permanent
failure.  If you fix the password (on the outbound_auth object) and reload,
nothing tells outbound_registration to try again because the registration itself
didn't change.  This patch adds an observer on the "auth" object type and if any
auth changes, existing registration states are searched and those in a
REJECTED_PERMANENT state are retried.

Tested-by: George Joseph

Review: https://reviewboard.asterisk.org/r/4304/
........

Merged revisions 430373 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430374 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoARI: Allow usage of ASYNCGOTO with Stasis()
Kinsey Moore [Wed, 7 Jan 2015 21:26:48 +0000 (21:26 +0000)]
ARI: Allow usage of ASYNCGOTO with Stasis()

When the AMI Redirect action is used with a channel bridged inside
Stasis() and not running a pbx, the channel is hung up instead of
proceeding to the desired location in dialplan. This change allows
such channels to be Redirected properly by detecting the operation
used by Redirect (ASYNCGOTO) and using the code already established
for functionality of the ARI channel continue operation.

ASTERISK-24591 #close
Review: https://reviewboard.asterisk.org/r/4271/
........

Merged revisions 430355 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430356 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoAdd the ability to continue and originate using priority labels.
Mark Michelson [Wed, 7 Jan 2015 18:54:06 +0000 (18:54 +0000)]
Add the ability to continue and originate using priority labels.

With this patch, the following two ARI commands

POST /channels
POST /channels/{id}/continue

Accept a new parameter, label, that can be used to continue to or originate
to a priority label in the dialplan.

Because this is adding a new parameter to ARI commands, the API version of
ARI has been bumped from 1.6.0 to 1.7.0.

This patch comes courtesy of Nir Simionovich from Greenfield Tech. Thanks!

ASTERISK-24412 #close
Reported by Nir Simionovich

Review: https://reviewboard.asterisk.org/r/4285
........

Merged revisions 430337 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430338 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_pjsip_exten_state: Change 'does not exist' warning to notice
George Joseph [Wed, 7 Jan 2015 18:17:42 +0000 (18:17 +0000)]
res_pjsip_exten_state: Change 'does not exist' warning to notice

The 'new_subscribe: Extension <> does not exist or has no associated hint'
is a config issue and doesn't need to clutter up logs with warnings.
Changed to notice.

Tested-by: George Joseph

Review: https://reviewboard.asterisk.org/r/4307/
........

Merged revisions 430319 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430321 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_pjsip_mwi: Change "MWI Subscription failed" message from warning to notice
George Joseph [Wed, 7 Jan 2015 18:15:02 +0000 (18:15 +0000)]
res_pjsip_mwi: Change "MWI Subscription failed" message from warning to notice

The "MWI Subscription failed" message means the client is trying to subscribe
to a mailbox that doesn't exist.  There's no need to clutter up logs with
warnings for a client misconfiguration so I changed it to a notice.

Tested-by: George Joseph

Review: https://reviewboard.asterisk.org/r/4306/
........

Merged revisions 430317 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430318 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agofunc_config: Add ability to retrieve specific occurrence of a variable
George Joseph [Wed, 7 Jan 2015 17:54:13 +0000 (17:54 +0000)]
func_config: Add ability to retrieve specific occurrence of a variable

I guess nobody uses templates with AST_CONFIG because today if you have a
context that inherits from a template and you call AST_CONFIG on the context,
you'll get the value from the template even if you've overridden it in the
context.  This is because AST_CONFIG only gets the first occurrence which is
always from the template.

This patch adds an optional 'index' parameter to AST_CONFIG which lets you
specify the exact occurrence to retrieve, or '-1' to retrieve the last.
The default behavior is the current behavior.

Tested-by: George Joseph

Review: https://reviewboard.asterisk.org/r/4313/
........

Merged revisions 430315 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430316 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoFix ability to perform a remote attended transfer with PJSIP.
Mark Michelson [Wed, 7 Jan 2015 17:45:56 +0000 (17:45 +0000)]
Fix ability to perform a remote attended transfer with PJSIP.

This fix has two parts:

* Corrected an error message to properly state that external_replaces is an extension. The
  error message also prints what dialplan context the external_replaces extension was being
  looked for in.
* Corrected the printing of the Replaces: header in an INVITE request. We were duplicating
  "Replaces: " in the header.

ASTERISK-24376 #close
Reported by Matt Jordan

Review: https://reviewboard.asterisk.org/r/4296
........

Merged revisions 430313 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430314 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoconfig: Add option to NOT preserve effective context when changing a template
George Joseph [Wed, 7 Jan 2015 16:56:59 +0000 (16:56 +0000)]
config: Add option to NOT preserve effective context when changing a template

Let's say you have a template T with variable VAR1 = ON and you have a
context C(T) that doesn't specify VAR1.  If you read C, the effective value
of VAR1 is ON.  Now you change T VAR1 to OFF and call
ast_config_text_file_save.  The current behavior is that the file gets
re-written with T/VAR1=OFF but C/VAR1=ON is added.  Personally, I think this
is a bug. It's preserving the effective state of C even though I didn't
specify C/VAR1 in th first place.  I believe the behavior should be that if
I didn't specify C/VAR1 originally, then the effective value of C/VAR1 should
continue to follow the inherited state.  Now, if I DID explicitly specify
C/VAR1, the it should be preserved even if the template changes.

Even though I think the existing behavior is a bug, it's been that way forever
so I'm not changing it.  Instead, I've created ast_config_text_file_save2()
that takes a bitmask of flags, one of which is to preserve the effective context
(the current behavior).  The original ast_config_text_file_save calls *2 with
the preserve flag.  If you want the new behavior, call *2 directly without a
flag.

I've also updated Manager UpdateConfig with a new parameter
'PreserveEffectiveContext' whose default is 'yes'.  If you want the new behavior
with UpdateConfig, set 'PreserveEffectiveContext: no'.

Tested-by: George Joseph

Review: https://reviewboard.asterisk.org/r/4297/
........

Merged revisions 430295 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430296 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoFix dev-mode build on recent gcc
Kinsey Moore [Wed, 7 Jan 2015 03:01:39 +0000 (03:01 +0000)]
Fix dev-mode build on recent gcc
........

Merged revisions 430274 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430275 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoBlocked revisions 430252
Matthew Jordan [Tue, 6 Jan 2015 22:46:43 +0000 (22:46 +0000)]
Blocked revisions 430252

........
contrib/ast-db-manage: Correct down_revision path for user_eq_phone

When the user_eq_phone patch was backported to 13, it referenced the downward
revision that the PJSIP optimistic encryption option also references. This
creates a multi-path upgrade Exception when generating the SQL files.

This patch corrects this in the 13 branch. Note that trunk, which already
contained both of these features, is unaffected by this problem.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430254 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_pjsip_mwi: Change warning to notice
George Joseph [Tue, 6 Jan 2015 17:53:42 +0000 (17:53 +0000)]
res_pjsip_mwi: Change warning to notice

When res_pjsip loads and an endpoint auto-subscribes a mailbox for mwi,
if a contact hasn't registered yet, res_pjsip_mwi spits out a warning.
This is a perfectly normal situation though and doesn't require something
as serious as a warning.  It's also self correcting. The device will start
getting mwi as soon as it registers.

This patch changes the warning to a notice.

Tested-by: George Joseph

Review: https://reviewboard.asterisk.org/r/4314/
........

Merged revisions 430227 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430228 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agobridge_native_rtp: Change local/remote message from debug/2 to verb/4
George Joseph [Tue, 6 Jan 2015 17:49:03 +0000 (17:49 +0000)]
bridge_native_rtp: Change local/remote message from debug/2 to verb/4

Change the "Locally bridged"/"Remotely bridged" messages from dbg/2 to verb/4.

Tested-by: George Joseph

Review: https://reviewboard.asterisk.org/r/4300/
........

Merged revisions 430225 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430226 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agooutbound_registration: Add 'pjsip send register' and update 'send unregister'
George Joseph [Tue, 6 Jan 2015 17:43:16 +0000 (17:43 +0000)]
outbound_registration: Add 'pjsip send register' and update 'send unregister'

The current behavior of 'pjsip send unregister' is to send the unregister
(REGISTER with 0 exp) but let the next scheduled register proceed normally.
I don't think that's a good idea.  If you unregister, it should stay
unregistered until you decide to start registrations again.  So this patch
just adds a cancel_registration call to the current unregister_task to
cancel the timer.

Of course, now you need  a way to start registration again so I've added
a 'pjsip send register' command that unregisters and cancels any existing
registration (the same as send unregister), then sends an immediate
registration and starts the timer back up again.

Both changes also ripple to AMI.  There's a new PJSIPRegister command.

There's no harm in calling either command repeatedly.  They don't care
about the actual state.

Tested-by: George Joseph

Review: https://reviewboard.asterisk.org/r/4301/
........

Merged revisions 430223 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430224 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agopjsip cli: Fix sorting of contacts for 'pjsip list contacts'
George Joseph [Tue, 6 Jan 2015 17:29:33 +0000 (17:29 +0000)]
pjsip cli: Fix sorting of contacts for 'pjsip list contacts'

For some reason I was using a hash container instead of a list to gather the
contacts for 'pjsip list/show contacts' so even though I had a sort function,
the output wasn't sorted.  This patch just changes the hash container to a
list container and the contacts now appear sorted in the CLI.

Tested-by: George Joseph

Review: https://reviewboard.asterisk.org/r/4305/
........

Merged revisions 430221 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430222 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agobridge: avoid leaking channel during blond transfer pt2
Scott Griepentrog [Mon, 5 Jan 2015 22:50:32 +0000 (22:50 +0000)]
bridge: avoid leaking channel during blond transfer pt2

A blond transfer to a failed destination, when followed
by a recall attempt, lead to a leak of the reference to
the destination channel.  In addition to correcting the
regression on the previous attempt (r429826) this fixes
the leak and two additional reference leaks on failures
of bridge_import.

ASTERISK-24513 #close
Review: https://reviewboard.asterisk.org/r/4302/
........

Merged revisions 430199 from http://svn.asterisk.org/svn/asterisk/branches/12
........

Merged revisions 430200 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430201 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agopjsip: Document addition of 'PJSIP_AOR' and 'PJSIP_CONTACT' in CHANGES file.
Joshua Colp [Mon, 5 Jan 2015 17:57:43 +0000 (17:57 +0000)]
pjsip: Document addition of 'PJSIP_AOR' and 'PJSIP_CONTACT' in CHANGES file.
........

Merged revisions 430181 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430182 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agopjsip: Add 'PJSIP_AOR' and 'PJSIP_CONTACT' dialplan functions.
Joshua Colp [Mon, 5 Jan 2015 17:53:42 +0000 (17:53 +0000)]
pjsip: Add 'PJSIP_AOR' and 'PJSIP_CONTACT' dialplan functions.

The PJSIP_AOR dialplan function allows inspection of configured AORs including
what contacts are currently bound to them.

The PJSIP_CONTACT dialplan function allows inspection of contacts in existence.
These can include both externally added (by way of registration) or permanent
ones.

ASTERISK-24341
Reported by: xrobau

Review: https://reviewboard.asterisk.org/r/4308/
........

Merged revisions 430179 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430180 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agortp_engine: keep payload types in correct range
Scott Griepentrog [Wed, 31 Dec 2014 18:54:37 +0000 (18:54 +0000)]
rtp_engine: keep payload types in correct range

In r428708 additional codecs were added including
a payload type of 128 which is outside of nominal
range of 0-127.  This change moves changes 128 to
96 to avoid causing a pjsip assertion when making
a call to an endpoint configured with allow=all.

ASTERISK-24367 #close
Review: https://reviewboard.asterisk.org/r/4286/

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430164 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoPJSIP: Update transport method documentation
Kinsey Moore [Mon, 29 Dec 2014 13:14:19 +0000 (13:14 +0000)]
PJSIP: Update transport method documentation

This updates the documentation for the 'method' configuration option to
be more verbose about the behaviors of values 'unspecified' and
'default'. They do exactly the same thing which is to select the
default as defined by PJSIP which is currently TLSv1.

Review: https://reviewboard.asterisk.org/r/4264/
........

Merged revisions 430145 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430146 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoapp_queue: Update sample conf documenation
Kevin Harwell [Wed, 24 Dec 2014 21:28:14 +0000 (21:28 +0000)]
app_queue: Update sample conf documenation

Updated the queues.conf.sample file to explicitly state which channel queue
variables are propagated to.

ASTERISK-24267
Reported by: Mitch Claborn
........

Merged revisions 430126 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 430127 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430128 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agomain/pbx.c: Fix double lock of contexts lock introduced by r429967
Matthew Jordan [Wed, 24 Dec 2014 16:59:42 +0000 (16:59 +0000)]
main/pbx.c: Fix double lock of contexts lock introduced by r429967

We only need to hold the context_merge_lock once. Locking it twice will make
many other parts of Asterisk very sad.

ASTERISK-24641 #close

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430111 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agopjsip_options: Fix continued qualifies after endpoint/aor deletion
George Joseph [Tue, 23 Dec 2014 23:19:30 +0000 (23:19 +0000)]
pjsip_options: Fix continued qualifies after endpoint/aor deletion

If you remove an endpoint/aor from pjsip.conf then do a core reload,
qualifies will continue even though the object are gone.  This happens
because nothing clears out the qualify tasks.

This patch unschedules all existing qualify tasks before scheduling
new ones on reload.

Tested-by: George Joseph

Review: https://reviewboard.asterisk.org/r/4290/
........

Merged revisions 430064 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430067 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agotest_astobj2: Fix warning for missing trailing slash in category
George Joseph [Tue, 23 Dec 2014 23:16:35 +0000 (23:16 +0000)]
test_astobj2: Fix warning for missing trailing slash in category

This patch adds a trailing slash to the category for this test.
No more warning.

Tested-by: George Joseph

Review: https://reviewboard.asterisk.org/r/4295/
........

Merged revisions 430059 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430060 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoDTMF atxfer: Setup recall channels as if the transferee initiated the call.
Richard Mudgett [Mon, 22 Dec 2014 21:20:11 +0000 (21:20 +0000)]
DTMF atxfer: Setup recall channels as if the transferee initiated the call.

After the initial DTMF atxfer call attempt to the transfer target fails to
answer during a blonde transfer, the recall callback channels do not get
setup with information from the initial transferrer channel.  As a result,
the recall callback to the transferrer does not have callid, channel
variables, datastores, accountcode, peeraccount, COLP, and CLID setup.  A
similar situation happens with the recall callback to the transfer target
but it is less visible.  The recall callback to the transfer target does
not have callid, channel variables, datastores, accountcode, peeraccount,
and COLP setup.

* Added missing information to the recall callback channels before
initiating the call.  callid, channel variables, datastores, accountcode,
peeraccount, COLP, and CLID

* Set callid of the transferrer channel on the DTMF atxfer controller
thread attended_transfer_monitor_thread().

* Added missing channel unlocks and props unref to off nominal paths in
attended_transfer_properties_alloc().

ASTERISK-23841 #close
Reported by: Richard Mudgett

Review: https://reviewboard.asterisk.org/r/4259/
........

Merged revisions 430034 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430041 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoFix compilation since the patch for ASTERISK-24363 went in.
Richard Mudgett [Mon, 22 Dec 2014 20:25:40 +0000 (20:25 +0000)]
Fix compilation since the patch for ASTERISK-24363 went in.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430028 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoqueue_log: Post QUEUESTART entry when Asterisk fully boots.
Richard Mudgett [Mon, 22 Dec 2014 20:08:35 +0000 (20:08 +0000)]
queue_log: Post QUEUESTART entry when Asterisk fully boots.

The QUEUESTART log entry has historically acted like a fully booted event
for the queue_log file.  When the QUEUESTART entry was posted to the log
was broken by the change made by ASTERISK-15863.

* Made post the QUEUESTART queue_log entry when Asterisk fully boots.
This restores the intent of that log entry and happens after realtime has
had a chance to load.

AST-1444 #close
Reported by: Denis Martinez

Review: https://reviewboard.asterisk.org/r/4282/
........

Merged revisions 430009 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 430010 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430011 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agochan_sip: Send CANCEL via original INVITE destination even after UPDATE request
Matthew Jordan [Mon, 22 Dec 2014 15:40:27 +0000 (15:40 +0000)]
chan_sip: Send CANCEL via original INVITE destination even after UPDATE request

Given the following scenario:
* Three SIP phones (A, B, C), all communicating via a proxy with Asterisk
* A call is established between A and B. B performs a SIP attended transfer of
  A to C. B sets the call on hold (A is hearing MOH) and dials the extension of
  C. While phone C is ringing, B transfers the call (that is, what we typically
  call a 'blond transfer').
* When the transfer completes, A hears the ringing of phone C, while B is idle.

In the SIP messaging for the above scenario, a REFER request is sent to
transfer the call. When "sendrpid=yes" is set in sip.conf, Asterisk may send an
UPDATE request to phone C to update party information. This update is sent
directly to phone C, not through the intervening proxy. This has the unfortunate
side effect of providing route information, which is then set on the sip_pvt
structure for C. If someone (e.g. B) is trying to get the call back (through a
directed pickup), Asterisk will send a CANCEL request to C. However, since we
have now updated the route set, the CANCEL request will be sent directly to C
and not through the proxy. The phone ignores this CANCEL according to RFC3261
(Section 9.1).

This patch updates reqprep such that the route is not updated if an UPDATE
request is being sent while the INVITE state is INV_PROCEEDING or
INV_EARLY_MEDIA. This ensures that a subsequent CANCEL request is still sent
to the correct location.

Review: https://reviewboard.asterisk.org/r/4279

ASTERISK-24628 #close
Reported by: Karsten Wemheuer
patches:
  issue.patch uploaded by Karsten Wemheuer (License 5930)
........

Merged revisions 429982 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 429983 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429984 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agopresencestate: Allow channel drivers to provide presence state information
Matthew Jordan [Mon, 22 Dec 2014 14:33:24 +0000 (14:33 +0000)]
presencestate: Allow channel drivers to provide presence state information

This patch adds the ability for channel drivers to supply presence information
in a similar manner to device state. The patch does not provide any channel
driver implementations, but it does provide the core infrastructure necessary
for channel drivers to provide such information.

The core handles multiple providers of presence state information. Ordering
of presence state is as follows:
 INVALID < NOT_SET < AVAILABLE < UNAVAILABLE < CHAT < AWAY < XA < DND

Each provider can trump the previous if it provides a presence state that
supercedes a previous one.

Review: https://reviewboard.asterisk.org/r/4050

ASTERISK-24363 #close
Reported by: Gareth Palmer
patches:
  chan_presencestate-428146.patch uploaded by Gareth Palmer (License 5169)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429967 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoapp_confbridge: Fix build error caused by XML validation errors
Matthew Jordan [Mon, 22 Dec 2014 12:16:36 +0000 (12:16 +0000)]
app_confbridge: Fix build error caused by XML validation errors

Summaries can't contain XML nodes, as they are defined to contain only text
data.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429952 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoapp_confbridge: Add the ability to pass options/command to MixMonitor
Matthew Jordan [Mon, 22 Dec 2014 02:35:05 +0000 (02:35 +0000)]
app_confbridge: Add the ability to pass options/command to MixMonitor

This patch adds the ability to pass options and a command to MixMontor when
recording a conference using ConfBridge.

New options are -

* record_options: Options to MixMontor, eg: m(), W() etc.
* record_command: The command to execute when recording is over.
* record_file_timestamp: Append the start time to the file name.

These options can also be used with the CONFBRIDGE function, e.g.,
Set(CONFBRIDGE(bridge,record_command)=/path/to/command ^{MIXMONITOR_FILENAME}))

Review: https://reviewboard.asterisk.org/r/4023

ASTERISK-24351 #close
Reported by: Gareth Palmer
patches:
  record_command-428838.patch uploaded by Gareth Palmer (License 5169)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429934 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_pjsip_phoneprovi_provider: Fix reload
George Joseph [Mon, 22 Dec 2014 00:17:49 +0000 (00:17 +0000)]
res_pjsip_phoneprovi_provider: Fix reload

Reloading wasn't working correctly because on a reload, the sorcery apply
handler was never being called for unchanged users.  So, instead of using
an apply handler, I'm now iterating over all users.  Works much more reliably.

Tested-by: George Joseph

Review: https://reviewboard.asterisk.org/r/4288/
........

Merged revisions 429914 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429915 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoacl: Fix reloading of configuration if configuration file does not exist at startup.
Joshua Colp [Sat, 20 Dec 2014 20:57:47 +0000 (20:57 +0000)]
acl: Fix reloading of configuration if configuration file does not exist at startup.

The named ACL code incorrectly destroyed the config options information if loading
of the configuration file failed at startup. This would result in reloading
also failing even if a valid configuration file was put in place.

ASTERISK-23733 #close
Reported by: Richard Kenner
........

Merged revisions 429893 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 429894 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429895 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_http_websocket.c: Fix incorrect use of sizeof in ast_websocket_write().
Richard Mudgett [Fri, 19 Dec 2014 20:56:12 +0000 (20:56 +0000)]
res_http_websocket.c: Fix incorrect use of sizeof in ast_websocket_write().

This won't fix the reported issue but it is an incorrect use of sizeof.

ASTERISK-24566
Reported by:  Badalian Vyacheslav
........

Merged revisions 429867 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 429868 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429870 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agochan_dahdi: Don't ignore setvar when using configuration section scheme.
Richard Mudgett [Fri, 19 Dec 2014 17:34:33 +0000 (17:34 +0000)]
chan_dahdi: Don't ignore setvar when using configuration section scheme.

When the configuration section scheme of chan_dahdi.conf is used (keyword
dahdichan instead of channel) all setvar= options are completely ignored.
No variable defined this way appears in the created DAHDI channels.

* Move the clearing of setvar values to after the deferred processing of
dahdichan.

AST-1378 #close
Reported by: Guenther Kelleter
Patch by: Guenther Kelleter
........

Merged revisions 429825 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 429829 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429830 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agobridge: avoid leaking channel during blond transfer
Scott Griepentrog [Fri, 19 Dec 2014 17:27:25 +0000 (17:27 +0000)]
bridge: avoid leaking channel during blond transfer

After a blond transfer (start attended and hang up)
to a destination that also hangs up without answer,
the Local;1 channel was leaked and would show up on
core show channels.  This was happening because the
attended state blond_nonfinal_enter() resetting the
props->transfer_target to null while releasing it's
own reference, which would later prevent props from
releasing another reference during destruction. The
change made here is simply to not assign the target
to NULL.

ASTERISK-24513 #close
Reported by: Mark Michelson
Review: https://reviewboard.asterisk.org/r/4262/
........

Merged revisions 429826 from http://svn.asterisk.org/svn/asterisk/branches/12
........

Merged revisions 429827 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429828 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agochan_dahdi.c, res_rtp_asterisk.c: Change some spammy debug messages to level 5.
Richard Mudgett [Thu, 18 Dec 2014 22:40:16 +0000 (22:40 +0000)]
chan_dahdi.c, res_rtp_asterisk.c: Change some spammy debug messages to level 5.

ASTERISK-24337 #close
Reported by: Rusty Newton
........

Merged revisions 429804 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 429805 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429806 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agochan_dahdi: Populate CALLERID(ani2) for incoming calls in featdmf signaling mode.
Richard Mudgett [Thu, 18 Dec 2014 20:09:21 +0000 (20:09 +0000)]
chan_dahdi: Populate CALLERID(ani2) for incoming calls in featdmf signaling mode.

For the featdmf signaling mode the incoming MF Caller-ID information is
formatted as follows: *${CALLERID(ani2)}${CALLERID(ani)}#*${EXTEN}#

Rather than discarding the ani2 digits, populate the CALLERID(ani2) value
with what is received instead.

AST-1368 #close
Reported by: Denis Martinez
Patches:
      extract_ani2_for_featdmf_v11.patch (license #5621) patch uploaded by Richard Mudgett
........

Merged revisions 429783 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 429784 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429785 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_pjsip_sdp_rtp: wrong bridge chosen when the DTMF mode is not compatible
Kevin Harwell [Thu, 18 Dec 2014 15:55:03 +0000 (15:55 +0000)]
res_pjsip_sdp_rtp: wrong bridge chosen when the DTMF mode is not compatible

A native rtp bridge was being chosen (it shouldn't have been) when using two
pjsip channels with incompatible DTMF modes.  This patch sets the rtp instance
property, AST_RTP_PROPERTY_DTMF, for the appropriate DTMF mode(s) for pjsip.
It was not being set before, meaning all DTMF modes for pjsip were being treated
as compatible, thus native bridging would be chosen as the bridge type when it
shouldn't have been.

ASTERISK-24459 #close
Reported by: Yaniv Simhi
Review: https://reviewboard.asterisk.org/r/4265/
........

Merged revisions 429763 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429764 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoPrevent potential infinite outbound authentication loops in registration.
Mark Michelson [Thu, 18 Dec 2014 15:40:13 +0000 (15:40 +0000)]
Prevent potential infinite outbound authentication loops in registration.

Prior to this patch, Asterisk would always respond to 401 responses to
registration attempts by trying to provide a registration with authentication
credentials. Even if subsequent attempts were rejected with 401 responses,
Asterisk would continue this behavior. If authentication credentials were
incorrect, this could continue forever.

With this patch, we keep track of whether we have attempted authentication
on an outbound registration attempt. If we already have, we don not try
again until the next attempt. This prevents the infinite loop scenario.

Review: https://reviewboard.asterisk.org/r/4273
........

Merged revisions 429761 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429762 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoPrevent possible race condition on dual redirect of channels in the same bridge.
Mark Michelson [Thu, 18 Dec 2014 15:18:45 +0000 (15:18 +0000)]
Prevent possible race condition on dual redirect of channels in the same bridge.

The AST_FLAG_BRIDGE_DUAL_REDIRECT_WAIT flag was created to prevent bridges from
prematurely acting on orphaned channels in bridges. The problem with the AMI
redirect action was that it was setting this flag on channels based on the presence
of a PBX, not whether the channel was in a bridge. Whether a channel has a PBX
is irrelevant, so the condition has been altered to check if the channel is in a
bridge.

ASTERISK-24536 #close
Reported by Niklas Larsson

Review: https://reviewboard.asterisk.org/r/4268
........

Merged revisions 429741 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429745 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoEnsure the correct value is returned for CHANNEL(pjsip, secure)
Mark Michelson [Thu, 18 Dec 2014 14:50:06 +0000 (14:50 +0000)]
Ensure the correct value is returned for CHANNEL(pjsip, secure)

Prior to this patch, we were using the PJSIP dialog's secure flag
to determine if a secure transport was being used. Unfortunately,
the dialog's secure flag was only set if a SIPS URI were in use,
as required by RFC 3261 sections 12.1.1 and 12.1.2. What we're interested
in is not dialog security, but transport security. This code change
switches to a model where we use the dialog's target URI to determine
what transport would be used to communicate, and then check if that
transport is secure.

AST-1450 #close
Reported by John Bigelow

Review: https://reviewboard.asterisk.org/r/4277
........

Merged revisions 429739 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429740 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_pjsip_config_wizard: fix unload SEGV
George Joseph [Thu, 18 Dec 2014 00:11:24 +0000 (00:11 +0000)]
res_pjsip_config_wizard: fix unload SEGV

If certain pjsip modules aren't loaded, the wizard causes a SEGV
when it unloads.  Added a check for the presense of the object
type wizard before trying to clean it up.

Tested-by: George Joseph
........

Merged revisions 429719 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429720 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_pjsip_config_wizard: Change FILEUNCHANGED config_load2 flag determination
George Joseph [Wed, 17 Dec 2014 23:06:01 +0000 (23:06 +0000)]
res_pjsip_config_wizard: Change FILEUNCHANGED config_load2 flag determination

The module now applies the FILEUNCHANGED flag when both reloaded is
specified AND there's no last_config for the object type.

Tested-by: George Joseph

Review: https://reviewboard.asterisk.org/r/4276/
........

Merged revisions 429699 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429700 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoFix printf problems with high ascii characters after r413586 (1.8).
Walter Doekes [Wed, 17 Dec 2014 10:23:32 +0000 (10:23 +0000)]
Fix printf problems with high ascii characters after r413586 (1.8).

In r413586 (1.8) various casts were added to silence gcc 4.10 warnings.
Those fixes included things like:

    -out += sprintf(out, "%%%02X", (unsigned char) *ptr);
    +out += sprintf(out, "%%%02X", (unsigned) *ptr);

That works for low ascii characters, but for the high range that yields
e.g. FFFFFFC3 when C3 is expected.

This changeset:
- fixes those casts to use the 'hh' unsigned char modifier instead
- consistently uses %02x instead of %2.2x (or other non-standard usage)
- adds a few 'h' modifiers in various places
- fixes a 'replcaes' typo
- dev/urandon typo (in 13+ patch)

Review: https://reviewboard.asterisk.org/r/4263/

ASTERISK-24619 #close
Reported by: Stefan27 (on IRC)
........

Merged revisions 429673 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 429674 from http://svn.asterisk.org/svn/asterisk/branches/12
........

Merged revisions 429675 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429683 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_pjsip_config_wizard: fix test breakage
George Joseph [Tue, 16 Dec 2014 17:53:59 +0000 (17:53 +0000)]
res_pjsip_config_wizard: fix test breakage

Fix test breakage caused by not checking for res_pjsip before
calling ast_sip_get_sorcery.

Tested-by: George Joseph

Review: https://reviewboard.asterisk.org/r/4269/
........

Merged revisions 429653 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429654 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agochan_sip: Allow T.38 switch-over when SRTP is in use.
Joshua Colp [Tue, 16 Dec 2014 16:39:47 +0000 (16:39 +0000)]
chan_sip: Allow T.38 switch-over when SRTP is in use.

Previously when SRTP was enabled on a channel it was not possible
to switch to T.38 as no crypto attributes would be present.

This change makes it so it is now possible. If a T.38 re-invite
comes in SRTP is terminated since in practice you can't encrypt
a UDPTL stream. Now... if we were doing T.38 over RTP (which
does exist) then we'd have a chance but almost nobody does that so
here we are.

ASTERISK-24449 #close
Reported by: Andreas Steinmetz
patches:
 udptl-ignore-srtp-v2.patch submitted by Andreas Steinmetz (license 6523)
........

Merged revisions 429632 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 429633 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429634 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_pjsip_t38: Fix T.38 failure when peer reinvites immediately.
Joshua Colp [Tue, 16 Dec 2014 15:44:43 +0000 (15:44 +0000)]
res_pjsip_t38: Fix T.38 failure when peer reinvites immediately.

If a remote endpoint reinvites to T.38 immediately the state machine
will go into a peer reinvite state. If a T.38 capable application
(such as ReceiveFax) queries it will receive this state. Normally
the application will then indicate so that the channel driver will
queue up the T.38 offer previously received. Once it receives this
offer the application will act normally and negotiate.

The res_pjsip_t38 module incorrectly partially squashed this indication.
This would cause the application to think the request had failed when
in reality it had actually worked.

This change makes it so that no T.38 control frames (or indications)
are squashed.
........

Merged revisions 429612 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429613 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_pjsip_config_wizard: Allow streamlined config of common pjsip scenarios
George Joseph [Mon, 15 Dec 2014 17:08:24 +0000 (17:08 +0000)]
res_pjsip_config_wizard: Allow streamlined config of common pjsip scenarios

res_pjsip_config_wizard
------------------
 * This is a new module that adds streamlined configuration capability for
   chan_pjsip.  It's targetted at users who have lots of basic configuration
   scenarios like 'phone' or 'agent' or 'trunk'.  Additional information
   can be found in the sample configuration file at
   config/samples/pjsip_wizard.conf.sample.

Tested-by: George Joseph

Review: https://reviewboard.asterisk.org/r/4190/
........

Merged revisions 429592 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429593 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoActivate persistent subscriptions when they are recreated.
Mark Michelson [Mon, 15 Dec 2014 15:48:47 +0000 (15:48 +0000)]
Activate persistent subscriptions when they are recreated.

Prior to this change, recreating persistent subscriptions would
create the subscription but would not activate it. This led to subscriptions
being listed in the "NULL" state by diagnostics and not sending NOTIFYs
when expected.

Review: https://reviewboard.asterisk.org/r/4261
........

Merged revisions 429571 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429573 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoloader: Move definition of ast_module_reload from _private.h to module.h
George Joseph [Fri, 12 Dec 2014 23:57:50 +0000 (23:57 +0000)]
loader: Move definition of ast_module_reload from _private.h to module.h

No functionality change.  Just move the definition of ast_module_reload
from _private.h to module.h so it can be public.

Also removed the include of _private.h from manager.c since ast_module_load
was the only reason for including it.

Tested-by: George Joseph

Review: https://reviewboard.asterisk.org/r/4251/
........

Merged revisions 429542 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429543 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoDEBUG_THREADS: Fix regression and lock tracking initialization problems.
Richard Mudgett [Fri, 12 Dec 2014 23:49:36 +0000 (23:49 +0000)]
DEBUG_THREADS: Fix regression and lock tracking initialization problems.

This patch started with David Lee's patch at
https://reviewboard.asterisk.org/r/2826/ and includes a regression fix
introduced by the ASTERISK-22455 patch.

The initialization of a mutex's lock tracking structure was not protected
in a critical section.  This is fine for any mutex that is explicitly
initialized, but a static mutex may have its lock tracking double
initialized if multiple threads attempt the first lock simultaneously.

* Added a global mutex to properly serialize initialization of the lock
tracking structure.  The painful global lock can be mitigated by adding a
double checked lock flag as discussed on the original review request.

* Defer lock tracking initialization until first use.

* Don't be "helpful" and initialize an uninitialized lock when
DEBUG_THREADS is enabled.  Debug code is not supposed to fix or change
normal code behavior.  We don't need a lock initialization race that would
force a re-setup of lock tracking.  Lock tracking already handles
initialization on first use.

* Properly handle allocation failures of the lock tracking structure.

* No need to initialize tracking data in __ast_pthread_mutex_destroy()
just to turn around and destroy it.

The regression introduced by ASTERISK-22455 is the result of manipulating
a pthread_mutex_t struct outside of the pthread library code.  The
pthread_mutex_t struct seems to have a global linked list pointer member
that can get changed by other threads.  Therefore, saving and restoring
the contents of a pthread_mutex_t struct is a bad thing.

Thanks to Thomas Airmont for finding this obscure regression.

* Don't overwrite the struct ast_lock_track.reentr_mutex member to restore
tracking data in __ast_cond_wait() and __ast_cond_timedwait().  The
pthread_mutex_t struct must be treated as a read-only opaque variable.

Miscellaneous other items fixed by this patch:

* Match ast_suspend_lock_info() with ast_restore_lock_info() in
__ast_cond_timedwait().

* Made some uninitialized lock sanity checks return EINVAL and try a
DO_THREAD_CRASH.

* Fix bad canlog initialization expressions.

ASTERISK-24614 #close
Reported by: Thomas Airmont

Review: https://reviewboard.asterisk.org/r/4247/
Review: https://reviewboard.asterisk.org/r/2826/
........

Merged revisions 429539 from http://svn.asterisk.org/svn/asterisk/branches/11

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429541 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores/res_agi: Make Verbose message for 'stream file' match other playbacks
Matthew Jordan [Fri, 12 Dec 2014 22:54:02 +0000 (22:54 +0000)]
res/res_agi: Make Verbose message for 'stream file' match other playbacks

The Verbose message displayed when a file is played back via 'stream file'
was formatted differently than other playbacks:
* It didn't include the channel name
* It didn't include the channel language
It does, however, include the playback offset as well as any escape digits.
That information was kept; however, this patch updates the formatting to more
closely match the Verbose messages displayed when a file is played back by
'control stream file', Playback, ControlPlayback, or any other file playback
operation.
........

Merged revisions 429519 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429520 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agomedia: Fix crash when determining sample count of a frame during shutdown.
Joshua Colp [Fri, 12 Dec 2014 17:01:42 +0000 (17:01 +0000)]
media: Fix crash when determining sample count of a frame during shutdown.

When shutting down Asterisk the codecs are cleaned up. As a result anything
attempting to get a codec based on ID or details will find that no codec
exists. This currently occurs when determining the sample count of a frame.
This code did not take this situation into account.

This change fixes this by getting the codec directly from the format and
eliminates the lookup. This is both faster and also provides a guarantee
that the codec will exist and will be valid.

ASTERISK-24604 #close
Reported by: Matt Jordan

Review: https://reviewboard.asterisk.org/r/4260/
........

Merged revisions 429497 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429498 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agochan_pjsip: Race between channel answer and bridge setup when using direct media
Kevin Harwell [Fri, 12 Dec 2014 15:31:38 +0000 (15:31 +0000)]
chan_pjsip: Race between channel answer and bridge setup when using direct media

When direct media is enabled and a pjsip channel is answered a race would occur
between the handling of the answer and bridge setup. Sometimes the media
negotiation would take place after the native bridge was setup. This resulted
in a NULL media address, which in turn resulted in Asterisk using its address
as the remote media address when sending a reinvite.  This patch makes the
chan_pjsip answer handler synchronous thus alleviating the race condition (the
bridge won't start setting things up until after it returns).

ASTERISK-24563 #close
Reported by: Steve Pitts
Review: https://reviewboard.asterisk.org/r/4257/
........

Merged revisions 429477 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429478 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoFix crash for sorcery misconfigs
David M. Lee [Fri, 12 Dec 2014 15:03:16 +0000 (15:03 +0000)]
Fix crash for sorcery misconfigs

res_pjsip_outbound_publish was missing the CHECK_PJSIP_MODULE_LOADED()
call in load_module, and would crash with a segfault if res_pjsip
declined to load.

Review: https://reviewboard.asterisk.org/r/4258/
........

Merged revisions 429457 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429458 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoPJSIP: Allow use of 'inactive' streams for hold
Kinsey Moore [Fri, 12 Dec 2014 14:12:38 +0000 (14:12 +0000)]
PJSIP: Allow use of 'inactive' streams for hold

This allows use of the 'inactive' stream direction identifier to be
used for hold where 'sendonly' is normally used. Some Seimens phones
use 'inactive' and this change allows music on hold to operate
properly.

Review: https://reviewboard.asterisk.org/r/4252/
Reported by: Steve Pitts
........

Merged revisions 429432 from http://svn.asterisk.org/svn/asterisk/branches/12
........

Merged revisions 429433 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429434 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoSorcery: Log when old config remains in use
Kinsey Moore [Fri, 12 Dec 2014 14:04:06 +0000 (14:04 +0000)]
Sorcery: Log when old config remains in use

This adds a log message notifying the user that a stale configuration
is in place upon reload when a config object fails to load. This
situation can end up causing confusion when the object failed to load
but exists from a previous config load especially when the old config
is significantly different from the new config.

Review: https://reviewboard.asterisk.org/r/4250/
Reported by: Thomas Thompson
........

Merged revisions 429429 from http://svn.asterisk.org/svn/asterisk/branches/12
........

Merged revisions 429430 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429431 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_pjsip_session: Delay sending BYE if a re-INVITE transaction is in progress.
Joshua Colp [Fri, 12 Dec 2014 13:06:24 +0000 (13:06 +0000)]
res_pjsip_session: Delay sending BYE if a re-INVITE transaction is in progress.

Given the scenario where a PJSIP channel is in a native RTP bridge with direct
media and the channel is then hung up the code will currently re-INVITE the channel
back to Asterisk and send a BYE at the same time. Many SIP implementations dislike
this greatly.

This change makes it so that if a re-INVITE transaction is in progress the BYE
is queued to occur after the completion of the transaction (be it through normal
means or a timeout).

Review: https://reviewboard.asterisk.org/r/4248/
........

Merged revisions 429409 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429410 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_pjsip_session: Fix issue where a declined media stream in a re-INVITE would fail...
Joshua Colp [Fri, 12 Dec 2014 12:32:13 +0000 (12:32 +0000)]
res_pjsip_session: Fix issue where a declined media stream in a re-INVITE would fail SDP negotiation.

In the past the SDP negotiation within res_pjsip_session was made more tolerant of
certain situations. The only case where SDP negotiation will fail is when a major
error occurs during negotiation. Receiving an already declined media stream is
not considered a major error.

When producing the local SDP the logic took this into account so on the initial INVITE
the declined media stream did not cause an SDP negotiation failure. Unfortunately
the logic for handling media streams with a handler did not mirror this logic and
considered an already declined media stream an error and thus failed the SDP
negotiation.

This change makes the logic between both situations match so only under major
errors will the SDP negotiation fail.

ASTERISK-24607 #close
Reported by: Matt Jordan

Review: https://reviewboard.asterisk.org/r/4254/
........

Merged revisions 429407 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429408 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoARI/AMI: Include language in standard channel snapshot output
Kevin Harwell [Thu, 11 Dec 2014 20:32:21 +0000 (20:32 +0000)]
ARI/AMI: Include language in standard channel snapshot output

The CHANGES verbiage for the "language" addition had been put under the wrong
release. This moves it to be under 13.1 to 13.2 changes.

ASTERISK-24553
Reported by: Matt Jordan
........

Merged revisions 429387 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429388 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoStasis: Update unittest for channel snapshots
Kinsey Moore [Thu, 11 Dec 2014 13:53:39 +0000 (13:53 +0000)]
Stasis: Update unittest for channel snapshots

This adjusts the unit test for channel snapshots to take the new
language key into account.
........

Merged revisions 429352 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429353 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agoARI/AMI: Include language in standard channel snapshot output
Kevin Harwell [Wed, 10 Dec 2014 15:43:48 +0000 (15:43 +0000)]
ARI/AMI: Include language in standard channel snapshot output

Adding information about including "language" in the standard channel snapshot
output to the CHANGES file. Note the actual source changes have already been
previously committed.

ASTERISK-24553
Reported by: Matt Jordan
........

Merged revisions 429325 from http://svn.asterisk.org/svn/asterisk/branches/12
........

Merged revisions 429326 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429327 65c4cc65-6c06-0410-ace0-fbb531ad65f3

5 years agores_http_websocket: Fix crash due to double freeing memory when receiving a payload...
Joshua Colp [Wed, 10 Dec 2014 13:35:52 +0000 (13:35 +0000)]
res_http_websocket: Fix crash due to double freeing memory when receiving a payload length of zero.

Frames with a payload length of 0 were incorrectly handled in res_http_websocket.
Provided a frame with a payload had been received prior it was possible for a double
free to occur. The realloc operation would succeed (thus freeing the payload) but be
treated as an error. When the session was then torn down the payload would be
freed again causing a crash. The read function now takes this into account.

This change also fixes assumptions made by users of res_http_websocket. There is no
guarantee that a frame received from it will be NULL terminated.

ASTERISK-24472 #close
Reported by: Badalian Vyacheslav

Review: https://reviewboard.asterisk.org/r/4220/
Review: https://reviewboard.asterisk.org/r/4219/
........

Merged revisions 429270 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 429272 from http://svn.asterisk.org/svn/asterisk/branches/12
........

Merged revisions 429273 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429274 65c4cc65-6c06-0410-ace0-fbb531ad65f3