10 years agoTweak ast_channel_softhangup_withcause_locked() to take a typed parameter.
Richard Mudgett [Fri, 8 Jun 2012 20:49:00 +0000 (20:49 +0000)]
Tweak ast_channel_softhangup_withcause_locked() to take a typed parameter.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoFix MWI update so LED display correct voicemail state after phone usage. Also fixes...
Igor Goncharovskiy [Fri, 8 Jun 2012 08:32:49 +0000 (08:32 +0000)]
Fix MWI update so LED display correct voicemail state after phone usage. Also fixes few warnings.
(closes issue #19675)
 Reported by: dbohling
       fixmwi.patch uploaded by dbohling (license 6378)

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoSkinny cleanup (mwi_event_cb).
Damien Wedhorn [Thu, 7 Jun 2012 21:44:15 +0000 (21:44 +0000)]
Skinny cleanup (mwi_event_cb).

Original was testing for d->session, setting and testing again (all nested).

Removed duplicate testing and restructured function to test/return and then
the main code.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoSkinny cleanup.
Damien Wedhorn [Thu, 7 Jun 2012 21:23:42 +0000 (21:23 +0000)]
Skinny cleanup.

Removed d->registered which was mirroring d->session. Changed relevant
references to use d->session instead.

Moved setting and unsetting of l->device from session register to device
configuration. As such, l->device will always be valid unless it is has not
been configured to a device. Revised various test where checking if a device
is registered to use l->device->session.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoFix app_queue debug message use of args.options after the string has been parsed.
Richard Mudgett [Thu, 7 Jun 2012 20:39:25 +0000 (20:39 +0000)]
Fix app_queue debug message use of args.options after the string has been parsed.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoFix inverted test in app_queue for ringinuse.
Richard Mudgett [Thu, 7 Jun 2012 20:37:05 +0000 (20:37 +0000)]
Fix inverted test in app_queue for ringinuse.

Regression from -r367080 ringinuse commit.

(issue ASTERISK-19536)

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoFix reloading an unchanged file with the Config Options API
Terry Wilson [Thu, 7 Jun 2012 20:32:07 +0000 (20:32 +0000)]
Fix reloading an unchanged file with the Config Options API

Adding multiple file support broke reloading an unchanged file. This
adds an enum for return values for the aco_process_* functions and
ensures that the config is not applied if res is not ACO_PROCESS_OK.


git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoFix a typo in format_ogg_vorbis.c: suport
Tzafrir Cohen [Thu, 7 Jun 2012 20:00:29 +0000 (20:00 +0000)]
Fix a typo in format_ogg_vorbis.c: suport


git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoAdd default handler documentation and standardize acl handler
Terry Wilson [Thu, 7 Jun 2012 15:43:37 +0000 (15:43 +0000)]
Add default handler documentation and standardize acl handler

Added documentation describing what flags and arguments to pass to
aco_option_register for default option types. Also changed the ACL
handler to use the flags parameter to differentiate between "permit"
and "deny" instead of adding an additional vararg parameter.


git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoFix POTS flash hook to orignate a second call deadlock.
Richard Mudgett [Wed, 6 Jun 2012 21:34:10 +0000 (21:34 +0000)]
Fix POTS flash hook to orignate a second call deadlock.

A deadlock can occur when a POTS phone tries to flash hook to originate a
second call for 3-way or transfer.  If another process is scanning the
channels container when the POTS line flash hooks then a deadlock will

* Release the channel and private locks when creating a new channel as a
result of a flash hook.

(closes issue ASTERISK-19842)
Reported by: rmudgett
Tested by: rmudgett

Merged revisions 368644 from

Merged revisions 368645 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoFix a specific scenario where ACKs are not matched.
Mark Michelson [Wed, 6 Jun 2012 19:25:44 +0000 (19:25 +0000)]
Fix a specific scenario where ACKs are not matched.

If a dialog-starting INVITE contains a to-tag, then Asterisk
will respond with a 481. In this case, the resulting incoming
ACK would not be matched, so Asterisk would continue retransmitting
the 481 until the transaction times out.

There were two issues. Asterisk, upon creating a sip_pvt would generate
a local tag. However, when the time came to transmit the 481, since there
was a to-tag in the INVITE, Asterisk would place this original to-tag
in the 481 response. When the ACK came in, Asterisk would attempt to
match the to-tag in the ACK to the generated local tag. Unfortunately,
Asterisk never actually transmitted a response with the generated local
tag, so the to-tag in the ACK would not match.

The other problem was that when the 481 was sent, nothing was set
on the sip_pvt to indicate what CSeq is expected in the ACK.

To fix the first problem, we zero out the to-tag seen in the incoming
INVITE. This way, Asterisk, when time to send a response, will send
its generated local tag instead.

To fix the second problem, we set the sip_pvt's pendinginvite to the
CSeq of the INVITE when we send a 481.

(closes issue ASTERISK-19892)
Reported by Mark Michelson

Merged revisions 368625 from

Merged revisions 368629 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoAdd feature modifier to versions produced from branches
Matthew Jordan [Wed, 6 Jun 2012 17:22:11 +0000 (17:22 +0000)]
Add feature modifier to versions produced from branches

Certain branches, such as Certified Asterisk, may have a modifier added to
them that specifies the features available in that branch.  For branches, this
modifier is expected to be reflected in the location of the branch in
subversion. For example, a subversion of URL of /certified/branches/1.8.11
would have a feature modifier of 'certified'.  This is slightly different then
how features are determined for tags, where the feature is part of the actual
tag name, e.g., "10.5.0-digiumphones".

In keeping with the nomenclature used for tags, the feature specifier for
branches is translated and placed after the revision numbers.  For the example
given previously, this would result in a branch version of
"Asterisk SVN-branch-1.8.11-cert-rXXXXXX".

Merged revisions 368604 from

Merged revisions 368605 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoEnsure overlapping hold flags do not conflict
Kinsey Moore [Wed, 6 Jun 2012 16:11:01 +0000 (16:11 +0000)]
Ensure overlapping hold flags do not conflict

When changing between different modes of hold, the flags were not being
cleared out properly causing a failure to change hold states.

(closes issue ASTERISK-19919)
Patch-by: Morten Tryfoss
Reported-by: Morten Tryfoss

Merged revisions 368586 from

Merged revisions 368587 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoFix parked call performing a DTMF blind transfer after being retrieved.
Richard Mudgett [Wed, 6 Jun 2012 01:11:12 +0000 (01:11 +0000)]
Fix parked call performing a DTMF blind transfer after being retrieved.

When a parked call was retrieved from the parking lot, it could not do a
blind transfer because it caused the involved calls to be hung up

* Made the ParkedCall application return the ast_bridge_call() return

(closes issue ABE-2862)
Reported by: Vlad Povorozniuc

Merged revisions 368567 from

Merged revisions 368568 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoMake builtin_blindtransfer() fully use ast_async_goto() abilities.
Richard Mudgett [Wed, 6 Jun 2012 00:54:20 +0000 (00:54 +0000)]
Make builtin_blindtransfer() fully use ast_async_goto() abilities.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoMerge 'core' and 'core changes' sections in CHANGES file.
Jonathan Rose [Tue, 5 Jun 2012 16:25:14 +0000 (16:25 +0000)]
Merge 'core' and 'core changes' sections in CHANGES file.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoRecorded merge of revisions 368536 from
Kinsey Moore [Tue, 5 Jun 2012 15:28:28 +0000 (15:28 +0000)]
Recorded merge of revisions 368536 from

Resolve some build warnings

My newly upgraded compiler caught these usages of uninitialized values.
They weren't actually used.

Merged revisions 368533 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoEnsure that pages and emails are sent using RFC822-compliant date format
Kinsey Moore [Tue, 5 Jun 2012 15:23:43 +0000 (15:23 +0000)]
Ensure that pages and emails are sent using RFC822-compliant date format

When localization was added to app_voicemail, these headers were altered
when they should have remained in en_US format for RFC compliance. This
reverts the changes to those two lines.

(closes issue ASTERISK-19876)

Merged revisions 368520 from

Merged revisions 368524 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

Kinsey Moore [Tue, 5 Jun 2012 14:41:43 +0000 (14:41 +0000)]

This was essentially duplicated functionality where normal channels used
AST_CAUSE_ANSWERED_ELSEWHERE while local channels and queues used
AST_FLAG_ANSWERED_ELSEWHERE.  This removes the flag and converts that usage

(closes issue ASTERISK-19865)
Patch-by: Birger Harzenetter

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoRelay proper SIP responses on calling side.
Mark Michelson [Mon, 4 Jun 2012 22:12:19 +0000 (22:12 +0000)]
Relay proper SIP responses on calling side.

Revision 351130 broke corect HANGUPCAUSE setting
for the 404 case in chan_sip. Other cases were also
potentially broken. This patch fixes the relaying
of causes to be what they used to be.

(closes issue ASTERISK-19914)
Reported by Pavel Troller
Tested by Walter Doekes (via a reviewboard test to be committed later)
chan_sip.diff uploaded by Pavel Troller (license #6302)

Merged revisions 368498 from

Merged revisions 368499 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoDocument BLINDTRANSFER behavior change.
Richard Mudgett [Mon, 4 Jun 2012 21:18:04 +0000 (21:18 +0000)]
Document BLINDTRANSFER behavior change.

(issue ASTERISK-19322)

(closes issue ASTERISK-19875)
Reported by: call

Merged revisions 368469 from

Merged revisions 368470 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoAlso have vim syntax-highlight type=network.
Mark Michelson [Mon, 4 Jun 2012 20:53:43 +0000 (20:53 +0000)]
Also have vim syntax-highlight type=network.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoAdd vim syntax highlighting for type=line, type=phone, and type=application.
Mark Michelson [Mon, 4 Jun 2012 20:51:17 +0000 (20:51 +0000)]
Add vim syntax highlighting for type=line, type=phone, and type=application.

(closes issue ASTERISK-19800)
Reported by: Billy Chia
asterisk.vim.patch uploaded by Billy Chia (license #6381)

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoRemove some extra debugging I forgot to remove in the merge of Digium phone support.
Mark Michelson [Mon, 4 Jun 2012 20:40:12 +0000 (20:40 +0000)]
Remove some extra debugging I forgot to remove in the merge of Digium phone support.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoRemove automerge properties.
Mark Michelson [Mon, 4 Jun 2012 20:30:07 +0000 (20:30 +0000)]
Remove automerge properties.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoMerge changes dealing with support for Digium phones.
Mark Michelson [Mon, 4 Jun 2012 20:26:12 +0000 (20:26 +0000)]
Merge changes dealing with support for Digium phones.

Presence support has been added. This is accomplished by
allowing for presence hints in addition to device state
hints. A dialplan function called PRESENCE_STATE has been
added to allow for setting and reading presence. Presence
can be transmitted to Digium phones using custom XML
elements in a PIDF presence document.

Voicemail has new APIs that allow for moving, removing,
forwarding, and playing messages. Messages have had a new
unique message ID added to them so that the APIs will work
reliably. The state of a voicemail mailbox can be obtained
using an API that allows one to get a snapshot of the mailbox.
A voicemail Dialplan App called VoiceMailPlayMsg has been
added to be able to play back a specific message.

Configuration hooks have been added. Configuration hooks
allow for a piece of code to be executed when a specific
configuration file is loaded by a specific module. This is
useful for modules that are dependent on the configuration
of other modules.

chan_sip now has a public method that allows for a custom
SIP INFO request to be sent mid-dialog. Digium phones use
this in order to display progress bars when files are played.

Messaging support has been expanded a bit. The main
visible difference is the addition of an AMI action

Finally, a ParkingLots manager action has been added in order
to get a list of parking lots.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoFix potential deadlock between masquerade and chan_local.
Richard Mudgett [Mon, 4 Jun 2012 19:46:33 +0000 (19:46 +0000)]
Fix potential deadlock between masquerade and chan_local.

* Restructure ast_do_masquerade() to not hold channel locks while it calls

* Simplify many calls to ast_do_masquerade() since it will never return a
failure now.  If it does fail internally because a channel driver callback
operation failed, the only thing ast_do_masquerade() can do is generate a
warning message about strange things may happen and press on.

* Fixed the call to ast_bridged_channel() in ast_do_masquerade().  This
change fixes half of the deadlock reported in ASTERISK-19801 between
masquerades and chan_iax.

(closes issue ASTERISK-19537)
Reported by: rmudgett
Tested by: rmudgett


Merged revisions 368405 from

Merged revisions 368407 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoAdd res_http_websocket module which implements the WebSocket protocol according to...
Joshua Colp [Sat, 2 Jun 2012 21:13:36 +0000 (21:13 +0000)]
Add res_http_websocket module which implements the WebSocket protocol according to RFC 6455.


git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoFix deadlock when Gosub used with alternate dialplan switches.
Richard Mudgett [Fri, 1 Jun 2012 23:53:59 +0000 (23:53 +0000)]
Fix deadlock when Gosub used with alternate dialplan switches.

Attempting to remove a channel from autoservice with the channel lock held
will result in deadlock.

* Restructured gosub_exec() to not call ast_parseable_goto() and
ast_exists_extension() with the channel lock held.

(closes issue ASTERISK-19764)
Reported by: rmudgett
Tested by: rmudgett

Merged revisions 368308 from

Merged revisions 368310 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoImprove SDP offer/answer RFC compliance
Kevin P. Fleming [Fri, 1 Jun 2012 20:42:10 +0000 (20:42 +0000)]
Improve SDP offer/answer RFC compliance

Asterisk should not accept SDP offers that contain unknown RTP profiles (for
audio/video streams) or unknown top-level media types. When it does, it answers
with an SDP that does not match the offer properly, and this will nearly
always result in a broken call. This patch causes such offers to be rejected.


git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoImprove SDP parsing warning messages
Kevin P. Fleming [Fri, 1 Jun 2012 20:31:15 +0000 (20:31 +0000)]
Improve SDP parsing warning messages

* 'Unsupported media type' is only reported when that is in fact the case,
   not when a supported media type is included in an 'm' line that has an
   invalid format.

* All warning messages related to parsing 'm' lines now include the 'm' line contents.

* (minor bugfix) newline added to port-number-zero warning messages.

* Warning messages improved to use RFC-specified terminology for various items.

* Warnings for offers that include more than one port for a single media type now
  include the media type.


Merged revisions 368218 from

Merged revisions 368267 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoAdd missing config for config API test
Terry Wilson [Fri, 1 Jun 2012 18:20:44 +0000 (18:20 +0000)]
Add missing config for config API test

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoAdd new config-parsing framework
Terry Wilson [Fri, 1 Jun 2012 16:33:25 +0000 (16:33 +0000)]
Add new config-parsing framework

This framework adds a way to register the various options in a config
file with Asterisk and to handle loading and reloading of that config
in a consistent and atomic manner.


git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoHelp mitigate potential reinvite glare scenarios.
Mark Michelson [Fri, 1 Jun 2012 13:04:32 +0000 (13:04 +0000)]
Help mitigate potential reinvite glare scenarios.

When Asterisk servers are set up back-to-back, and
direct media is to be used betweeen endpoints, it is
fairly common for the two Asterisk servers to send
direct media reinvites to each other simultaneously.
This results in 491s and ACKs being exchanged between
the servers. While the media eventually gets set up
properly, the problem is that there can be a noticeable
delay for the streams to stabilize.

This patch adds a new directmedia option called "outgoing".
With this set, an immediate direct media reinvite will only
be sent if the call direction is outgoing. For incoming
dialogs, an immediate direct media reinvite will not be sent,
but further "reactionary" direct media reinvites may be sent.


git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoAdd documentation to function CHANNEL for options echocan_mode and buffers
Michael L. Young [Fri, 1 Jun 2012 03:30:01 +0000 (03:30 +0000)]
Add documentation to function CHANNEL for options echocan_mode and buffers

The ability to set "echocan_mode" and "buffers" through the dialplan was added
to chan_dahdi some time ago.  This patch adds some documentation to

(Closes issue ASTERISK-19911)
Reported by: Dale Noll
Tested by: Michael L. Young
  asterisk-19911-branch18.diff uploaded by Michael L. Young (license 5026)


Merged revisions 368092 from

Merged revisions 368093 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoCoverity Report: Fix issues for error type REVERSE_INULL (core modules)
Richard Mudgett [Thu, 31 May 2012 18:39:30 +0000 (18:39 +0000)]
Coverity Report: Fix issues for error type REVERSE_INULL (core modules)

* Fixes findings: 0-2,5,7-15,24-26,28-31

(issue ASTERISK-19648)
Reported by: Matt Jordan

Merged revisions 368039 from

Merged revisions 368042 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoUse the DEADLOCK_AVOIDANCE() macro instead.
Richard Mudgett [Wed, 30 May 2012 18:08:12 +0000 (18:08 +0000)]
Use the DEADLOCK_AVOIDANCE() macro instead.

(issue ASTERISK-19854)

Merged revisions 367980 from

Merged revisions 367981 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoFix deadlock when executing CLI "pri show channels" and "ss7 show channels" commands.
Richard Mudgett [Wed, 30 May 2012 17:50:38 +0000 (17:50 +0000)]
Fix deadlock when executing CLI "pri show channels" and  "ss7 show channels" commands.

* Fix sig_pri_lock_owner() to avoid deadlock properly.

* Code pri_grab() better.

* Fix sig_ss7_lock_owner() to avoid deadlock properly.

* Code ss7_grab() better.

(closes issue ASTERISK-19854)
Reported by: Jaxon
      jira_asterisk_19854_v1.8.6.patch (license #5621) patch uploaded by rmudgett (Modified to do the same thing to sig_ss7)
Tested by: Jaxon

Merged revisions 367976 from

Merged revisions 367978 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoCoverity Report: Fix issues for error type REVERSE_INULL (deprecated modules)
Richard Mudgett [Tue, 29 May 2012 22:37:19 +0000 (22:37 +0000)]
Coverity Report: Fix issues for error type REVERSE_INULL (deprecated modules)

* Fix only issue pointed out by deprecated_REVERSE_INULL.txt for
app_meetme.c in find_user().

* Change use of %i to %d in sscanf() in find_user().  The use of %i gives
unexpected parsing because it can accept hex, octal, and decimal integer

* Changed other uses of %i in app_meetme() to use %d for consistency.

(issue ASTERISK-19648)
Reported by: Matt Jordan

Merged revisions 367906 from

Merged revisions 367907 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoAST-2012-008: Fix remote crash vulnerability in chan_skinny
Matthew Jordan [Tue, 29 May 2012 18:40:26 +0000 (18:40 +0000)]
AST-2012-008: Fix remote crash vulnerability in chan_skinny

When a skinny session is unregistered, the corresponding device pointer is set
to NULL in the channel private data.  If the client was not in the on-hook state
at the time the connection was closed, the device pointer can later be
dereferened if a message or channel event attempts to use a line's pointer to
said device.

The patches prevent this from occurring by checking the line's pointer in
message handlers and channel callbacks that can fire after an unregistration

(closes issue ASTERISK-19905)
Reported by: Christoph Hebeisen
Tested by: mjordan, Damien Wedhorn
  AST-2012-008-1.8.diff uploaded by mjordan (license 6283)
  AST-2012-008-10.diff uploaded by mjordan (licesen 6283)

Merged revisions 367844 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoAST-2012-007: Fix IAX receiving HOLD without suggested MOH class crash.
Richard Mudgett [Fri, 25 May 2012 16:33:31 +0000 (16:33 +0000)]
AST-2012-007: Fix IAX receiving HOLD without suggested MOH class crash.

* Made schedule_delivery() set the received frame f->data.ptr to NULL if
the datalen is zero.

* Fix queue_signalling() memcpy() size error.

* Made queue_signalling() not use C++ keyword variable names.

(closes issue ASTERISK-19597)
Reported by: mgrobecker
      jira_asterisk_19597_v1.8.patch (license #5621) patch uploaded by rmudgett
Tested by: rmudgett, Michael L. Young

Merged revisions 367781 from

Merged revisions 367782 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoFix pvt_sip for inbound call to use peer's allowtransfer setting
Michael L. Young [Fri, 25 May 2012 02:31:58 +0000 (02:31 +0000)]
Fix pvt_sip for inbound call to use peer's allowtransfer setting

The pvt_sip allowtransfer was not being set to that of the peer's setting.
Therefore, the global allowtransfer setting was being used instead which would
lead to calls not being transfered if the global setting was set to 'no' despite
the setting on the peer being 'yes' and vice versa, calls would be allowed to
transfer even if the peer's setting was 'no' but the global setting was 'yes'.

(Closes issue ASTERISK-19856)
Reported by: Jacek
Tested by: Michael L. Young, Jacek
issue-asterisk-19856-branch10-v3.diff uploaded by
                                                 Michael L. Young (license 5026)


Merged revisions 367730 from

Merged revisions 367731 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoFix Dial I option ignored if dial forked and one fork redirects.
Richard Mudgett [Thu, 24 May 2012 23:52:40 +0000 (23:52 +0000)]
Fix Dial I option ignored if dial forked and one fork redirects.

The Dial and Queue I option is intended to block connected line updates
and redirecting updates.  However, it is a feature that when a call is
locally redirected, the I option is disabled if the redirected call runs
as a local channel so the administrator can have an opportunity to setup
new connected line information.  Unfortunately, the Dial and Queue I
option is disabled for *all* forked calls if one of those calls is

* Make the Dial and Queue I option apply to each outgoing call leg
independently.  Now if one outgoing call leg is locally redirected, the
other outgoing calls are not affected.

* Made Dial not pass any redirecting updates when forking calls.
Redirecting updates do not make sense for this scenario.

* Made Queue not pass any redirecting updates when using the ringall
strategy.  Redirecting updates do not make sense for this scenario.

* Fixed deadlock potential with chan_local when Dial and Queue send
redirecting updates for a local redirect.

* Converted the Queue stillgoing flag to a boolean bitfield.

(closes issue ASTERISK-19511)
Reported by: rmudgett
Tested by: rmudgett


Merged revisions 367678 from

Merged revisions 367679 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agochan_sip: fix problem directmediapermit/deny uses the wrong address
Jonathan Rose [Thu, 24 May 2012 18:56:43 +0000 (18:56 +0000)]
chan_sip: fix problem directmediapermit/deny uses the wrong address

When remotely bridging calls with directmedia, Asterisk would check
the address of the peers/users holding directmedia ACLs (set via
directmediapermit/directmediadeny) instead of the bridged peer. This
is similar to r366547, but trunk specific and involves changes to
the rtpengine instead of just chan_sip.

(closes issue AST-876)

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoBlocked revisions 366591
Jonathan Rose [Thu, 24 May 2012 16:12:11 +0000 (16:12 +0000)]
Blocked revisions 366591

chan_sip: Check the right channel's host address for directmediapermit/deny

Prior to this patch, when checking the addresses for directmediapermit and
directmediadeny, Asterisk would check the host address of the channel
permit/deny was specified, which differs from the expectations of both
our users and the development team. Instead, directmediapermit/deny now
checks against the address of the channel that the peer with the ACL is
connected to.

(issue AST-876)

Merged revisions 366547 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoFix crash in ConfBridge when user announcement is played for more than 2 users
Matthew Jordan [Thu, 24 May 2012 13:33:53 +0000 (13:33 +0000)]
Fix crash in ConfBridge when user announcement is played for more than 2 users

A patch introduced in r354938 made it so that ConfBridge would not attempt to
play sound files if those files did not exist.  Unfortunately, ConfBridge uses
the same underlying function, play_sound_helper, to playback both sound files
and numbers to callers.  When a number is being played back, the name of the
sound file is expected to be NULL.  This NULL value was passed into a function
that tested for the existance of a sound file and is not tolerant to NULL
file names, causing a crash.

This patch fixes the behavior, such that if a sound file does not exist we
do not attempt to play it, but we only attempt that check if the a sound file
was specified in the first place.  If a sound file was not specified, we use
the 'play number' logic in the helper function.

(closes issue ASTERISK-19899)
Reported by: Florian Gilcher
Tested by: Florian Gilcher
  asterisk-19899.diff uploaded by mjordan (license 6283)

Merged revisions 367562 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoMade use IAX frame cache only for cacheable frame types.
Richard Mudgett [Thu, 24 May 2012 00:36:19 +0000 (00:36 +0000)]
Made use IAX frame cache only for cacheable frame types.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoFix WaitExten(x,m(musicclass)) string termination.
Richard Mudgett [Wed, 23 May 2012 23:22:42 +0000 (23:22 +0000)]
Fix WaitExten(x,m(musicclass)) string termination.

The AST_CONTROL_HOLD MOH class from the WaitExten application can now be
queued onto a channel, passed over local channels with the /m option, and
passed over IAX channels.

Merged revisions 367469 from

Merged revisions 367470 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agologger: Fix a potential callid reference leak discovered in development
Jonathan Rose [Wed, 23 May 2012 20:39:22 +0000 (20:39 +0000)]
logger: Fix a potential callid reference leak discovered in development

Uncovered a nasty reference leak while I was writing some changes to
chan_dahdi/sig_analog. Slapped myself around a bit after seeing that I
performed the unchecked return causing this problem.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoOnly call SSL_CTX_free if DO_SSL is defined.
Mark Michelson [Wed, 23 May 2012 20:30:21 +0000 (20:30 +0000)]
Only call SSL_CTX_free if DO_SSL is defined.

Thanks to Paul Belanger for pointing out this error.

Merged revisions 367416 from

Merged revisions 367417 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoRe-add LastMsgsSent value for SIP peers
Matthew Jordan [Wed, 23 May 2012 13:46:38 +0000 (13:46 +0000)]
Re-add LastMsgsSent value for SIP peers

Previously, MWI logic utilized a counter called 'lastmsgssent' to know whether
or not MWI NOTIFY requests had been sent to a specific peer.  When MWI
notifications were changed to use the internal event framework, this value was
no longer needed for its original purpose.  Hence, it was no longer updated
with the new/old message counts for a peer.  The value was previously removed
for Asterisk 10; however, since it was still present in Asterisk 1.8 and still
useful for reporting purposes, it was decided to re-add the value.

This patch re-adds the 'LastMsgsSent' field in the response to an AMI/CLI 'sip
show peer [peer]' command, and makes it so that the value of lastmsgssent is
updated appropriately. The value should now display the new/old message counts
for a particular peer.

(closes issue ASTERISK-17866)
Reported by: Steve Davies
patches by:
  ast-17866-rb1272.patch (License #5041 by irroot)
  Modified slightly for this commit


Merged revisions 367362 from

Merged revisions 367369 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoFix race condition for CEL LINKEDID_END event
Terry Wilson [Tue, 22 May 2012 17:29:12 +0000 (17:29 +0000)]
Fix race condition for CEL LINKEDID_END event

This patch fixes to situations that could cause the CEL LINKEDID_END event to
be missed.

1) During a core stop gracefully, modules are unloaded when ast_active_channels
== 0. The LINKDEDID_END event fires during the channel destructor. This means
that occasionally, the cel_* module will be unloaded before the channel is
destroyed. It seemed generally useful to wait until the refcount of all
channels == 0 before unloading, so I added a channel counter and used it in the
shutdown code.

2) During a masquerade, ast_channel_change_linkedid is called. It calls
ast_cel_check_retire_linkedid which unrefs the linkedid in the linkedids
container in cel.c. It didn't ref the new linkedid. Now it does.


Merged revisions 367292 from

Merged revisions 367299 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoResolve crash in subscribing for MWI notifications
Terry Wilson [Tue, 22 May 2012 16:23:19 +0000 (16:23 +0000)]
Resolve crash in subscribing for MWI notifications

ASTOBJ_UNREF sets the variable to NULL after unreffing it, so the variable
should definitely not be used after that. To solve this in the two cases
that affect subscribing for MWI notifications, we instead save the ref
locally, and unref them in the error conditions.

(closes issue ASTERISK-19827)
Reported by: B. R

Merged revisions 367266 from

Merged revisions 367267 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoMade ast_queue_hangup() and ast_queue_hangup_with_cause() lock instead of trylock.
Richard Mudgett [Mon, 21 May 2012 22:45:41 +0000 (22:45 +0000)]
Made ast_queue_hangup() and ast_queue_hangup_with_cause() lock instead of trylock.

It made no sense to trylock the channel and then unconditionally lock the
channel right after.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoMake chan_iax2 reject cause code indications correctly
Kinsey Moore [Mon, 21 May 2012 20:35:58 +0000 (20:35 +0000)]
Make chan_iax2 reject cause code indications correctly

If chan_iax2 does not reject the PVT_CAUSE_CODE frames, the cause will not be
stored properly.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoRevert revision 367163.
Mark Michelson [Mon, 21 May 2012 20:31:53 +0000 (20:31 +0000)]
Revert revision 367163.

This should have been committed to my team trunk-digiumphones branch
instead of trunk.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoAdd "send to voicemail" Digium phone functionality to Asterisk.
Mark Michelson [Mon, 21 May 2012 19:22:25 +0000 (19:22 +0000)]
Add "send to voicemail" Digium phone functionality to Asterisk.

This change accommodates two methods by which calls can be directed to
a user's voicemail.

* Incoming calls can be redirected to any user's voicemail.
* Established calls can be blind transferred to any user's voicemail.

Digium phones indicate the desire to direct a call to voicemail by using
a Diversion header with a reason parameter of "send_to_vm".

This patch adds the "send_to_vm" reason as a valid redirecting reason. In
addition, chan_sip.c has been modified to update redirecting information
on the transferred channel by reading a Diversion header on a REFER request.

(closes issue AST-871)
Reported by Malcolm Davenport


git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoMinor documentation change
Terry Wilson [Mon, 21 May 2012 17:39:37 +0000 (17:39 +0000)]
Minor documentation change

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoapp_queue: Per Member ringinuse option and deprecation of ignorebusy
Jonathan Rose [Fri, 18 May 2012 19:39:54 +0000 (19:39 +0000)]
app_queue: Per Member ringinuse option and deprecation of ignorebusy

Adds a number of methods for controlling the setting of 'ringinuse'
which is basically the same concept as the old ignorebusy setting,
only now the per member setting always controls whether or not the
member is actually ringed while in use. A CLI command and a manager
action have been added to change a given queue member's ringinuse
option while Asterisk is running and the an argument has been added
for adding members with deliberately set ringinuse in queues.conf
Some effort has been made to ensure compatability with dialplans and
databases still referring to 'ignorebusy'.

(issue ASTERISK-19536)
reported by: Philippe Lindheimer

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoAddress MISSING_BREAK static analysis reports some more.
Mark Michelson [Fri, 18 May 2012 17:54:07 +0000 (17:54 +0000)]
Address MISSING_BREAK static analysis reports some more.

This addresses core findings 4 and 6.

Moises Silva helped me by stating that a break could be
safely added to the case where it is added in chan_dahdi.c

In say.c, I have added a comment indicating that static analysis
complains but that it is currently unknown if this is correct.

This fixes all core findings of this type.

(closes issue ASTERISK-19662)
reported by Matthew Jordan

Merged revisions 367027 from

Merged revisions 367028 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoFix memory leak of SSL_CTX structures in TLS core.
Mark Michelson [Fri, 18 May 2012 17:24:57 +0000 (17:24 +0000)]
Fix memory leak of SSL_CTX structures in TLS core.

SSL_CTX structures were allocated but never freed. This was a bigger
issue for clients than servers since new SSL_CTX structures could be
allocated for each connection. Servers, on the other hand, typically
set up a single SSL_CTX for their lifetime.

This is solved in two ways:

1. In __ssl_setup(), if a tcptls_cfg has an ssl_ctx on it, it is
freed so that a new one can take its place.
2. A companion to ast_ssl_setup() called ast_ssl_teardown() has
been added so that servers can properly free their SSL_CTXs.

(issue ASTERISK-19278)

Merged revisions 367002 from

Merged revisions 367003 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoFix more memory leaks
Matthew Jordan [Fri, 18 May 2012 15:51:16 +0000 (15:51 +0000)]
Fix more memory leaks

This patch adds to what was fixed in r366880.  Specifically, it addresses the

* chan_sip:   dispose of an allocated frame in off nominal code paths in
* func_odbc:  when disposing of an allocated resultset, ensure that any rows
              that were appended to that resultset are also disposed of
* cli:        free the created return string buffer in another off nominal code
* chan_dahdi: free a frame that was allocated by the dsp layer if we choose
              not to process that frame

(issue ASTERISK-19665)
Reported by: Matt Jordan


Merged revisions 366944 from

Merged revisions 366948 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoFix a variety of memory leaks
Matthew Jordan [Fri, 18 May 2012 14:43:44 +0000 (14:43 +0000)]
Fix a variety of memory leaks

This patch addresses a number of memory leaks in a variety of modules that were
found by a static analysis tool.  A brief summary of the changes:

* app_minivm:       free ast_str objects on off nominal paths
* app_page:         free the ast_dial object if the requested channel technology
                    cannot be appended to the dialing structure
* app_queue:        if a penalty rule failed to match any existing rule list
                    names, the created rule would not be inserted and its memory
                    would be leaked
* app_read:         dispose of the created silence detector in the presence of
                    off nominal circumstances
* app_voicemail:    dispose of an allocated unique ID field for MWI event
                    un-subscribe requests in off nominal paths; dispose of
                    configuration objects when using the secret.conf option
* chan_dahdi:       dispose of the allocated frame produced by ast_dsp_process
* chan_iax2:        properly unref peer in CLI command "iax2 unregister"
* chan_sip:         dispose of the allocated frame produced by sip_rtp_read's
                    call of ast_dsp_process; free memory in parse unit tests
* func_dialgroup:   properly deref ao2 object grhead in nominal path of
* func_odbc:        free resultset in off nominal paths of odbc_read
* cli:              free match_list in off nominal paths of CLI match completion
* config:           free comment_buffer/list_buffer when configuration file load
                    is unchanged; free the same buffers any time they were
                    created and config files were processed
* data:             free XML nodes in various places
* enum:             free context buffer in off nominal paths
* features:         free ast_call_feature in off nominal paths of applicationmap
                    config processing
* netsock2:         users of ast_sockaddr_resolve pass in an ast_sockaddr struct
                    that is allocated by the method.  Failures in
                    ast_sockaddr_resolve could result in the users of the method
                    not knowing whether or not the buffer was allocated.  The
                    method will now not allocate the ast_sockaddr struct if it
                    will return failure.
* pbx:              cleanup hash table traversals in off nominal paths; free
                    ignore pattern buffer if it already exists for the specified
* xmldoc:           cleanup various nodes when we no longer need them
* main/editline:    various cleanup of pointers not being freed before being
                    assigned to other memory, cleanup along off nominal paths
* menuselect/mxml:  cleanup of value buffer for an attribute when that attribute
                    did not specify a value
* res_calendar*:    responses are allocated via the various *_request method
                    returns and should not be allocated in the various
                    write_event methods; ensure attendee buffer is freed if no
                    data exists in the parsed node; ensure that calendar objects
                    are de-ref'd appropriately
* res_jabber:       free buffer in off nominal path
* res_musiconhold:  close the DIR* object in off nominal paths
* res_rtp_asterisk: if we run out of ports, close the rtp socket object and free
                    the rtp object
* res_srtp:         if we fail to create the session in libsrtp, destroy the
                    temporary ast_srtp object

(issue ASTERISK-19665)
Reported by: Matt Jordan


Merged revisions 366880 from

Merged revisions 366881 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agochan_sip: Fix a small TEST_FRAMEWORK related error that prevents compiling
Jonathan Rose [Fri, 18 May 2012 14:27:01 +0000 (14:27 +0000)]
chan_sip: Fix a small TEST_FRAMEWORK related error that prevents compiling

Introduced with r366842, a function call made only with TEST_FRAMEWORK enabled
was missing an argument since the function arguments were changed.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoReorder and renumber tests appropriately
Kinsey Moore [Fri, 18 May 2012 14:21:37 +0000 (14:21 +0000)]
Reorder and renumber tests appropriately

It appears that a patch did not apply properly when adding tests 12 and
13 and test 11 was duplicated.  These tests have been reordered and
renumbered such that they make sense.

Merged revisions 366882 from

Merged revisions 366884 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoMake the new SIP_CAUSE backend behave more like the original SIP_CAUSE
Kinsey Moore [Thu, 17 May 2012 16:30:50 +0000 (16:30 +0000)]
Make the new SIP_CAUSE backend behave more like the original SIP_CAUSE

There was a slight discrepancy in the behaviors of the old SIP_CAUSE and the
new SIP_CAUSE/HANGUPCAUSE when a channel had been originated and had not yet
been answered. This caused the noload_res_srtp_attempt_srtp test to fail since
the SIP_CAUSE variable was never actually set. This behavior has been restored.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agologger: Adds additional support for call id logging and chan_sip specific stuff
Jonathan Rose [Thu, 17 May 2012 16:28:20 +0000 (16:28 +0000)]
logger: Adds additional support for call id logging and chan_sip specific stuff

This patch improves the handling of call id logging significantly with regard
to transfers and adding APIs to better handle specific aspects of logging.
Also, changes have been made to chan_sip in order to better handle the creation
of callids and to enable the monitor thread to bind itself to a particular
call id when a dialog is determined to be related to a callid. It then unbinds
itself before returning to normal monitoring.


git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoBlocked revisions 366792
Jonathan Rose [Thu, 17 May 2012 14:42:49 +0000 (14:42 +0000)]
Blocked revisions 366792

chan_sip: Fix missed locking of opposing pvt for directmedia acl from r366547

It also required deadlock avoidance since two sip_pvts structs needed to be
locked simultaneously. Trunk handles it differently, so this is a 1.8 and 10
patch only.

Merged revisions 366791 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoFix checking bounds of array index after using it; improper sizeof
Matthew Jordan [Thu, 17 May 2012 13:21:19 +0000 (13:21 +0000)]
Fix checking bounds of array index after using it; improper sizeof

This patch fixes two problems pointed out by a static analysis tool.

* In chan_dahdi, when an event is handled the index of the sub channel is first
  obtained.  In very off nominal cases, the method that determines the index
  can return a negative value.  In the event handling code, whether or not
  the index returned is valid was being checked after that value was used to
  index into an array.  This patch makes it so the value is checked before
  any indexing is done.

* In res_calendar_ews, sizeof was being passed a pointer instead of the struct to
  determine the amount of memory to allocate.

(issue ASTERISK-19651)
Reported by: Matt Jordan

(closes issue ASTERISK-19671)
Reported by: Matt Jordan

Merged revisions 366740 from

Merged revisions 366741 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoRemove missed idx parameter to some ao2 global holder macros.
Richard Mudgett [Wed, 16 May 2012 18:00:18 +0000 (18:00 +0000)]
Remove missed idx parameter to some ao2 global holder macros.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoChange ao2 global array to ao2 global object holder.
Richard Mudgett [Wed, 16 May 2012 16:34:42 +0000 (16:34 +0000)]
Change ao2 global array to ao2 global object holder.


git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoCorrect misuse of ast_strip_quoted() when getting a Diversion header's reason parameter.
Mark Michelson [Tue, 15 May 2012 23:41:59 +0000 (23:41 +0000)]
Correct misuse of ast_strip_quoted() when getting a Diversion header's reason parameter.

The use here was assuming that the pointer would be updated, but the updated string
is actually returned by ast_strip_quoted() instead.

Merged revisions 366597 from

Merged revisions 366598 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoThe predial routine must be run on the local;1 channel.
Richard Mudgett [Tue, 15 May 2012 19:36:26 +0000 (19:36 +0000)]
The predial routine must be run on the local;1 channel.

When ast_call() operates on a local channel, it copies a lot of things
from the local;1 channel to the local;2 channel.  This includes among
other things, channel variables and party id information.

Other reasons it was a bad idea to run predial on the local;2 channel:

1) The channel has not been completely setup.  The ast_call() completes
the setup.

2) The local;2 caller and connected line party information is opposite to
any other channels predial runs on.  (And it hasn't been setup yet.)

* Partially back out -r366183 by removing the chan_local implementation of
the struct ast_channel_tech.pre_call callback.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoAdd predial support to FollowMe.
Richard Mudgett [Tue, 15 May 2012 16:53:09 +0000 (16:53 +0000)]
Add predial support to FollowMe.

Like the new predial feature for Dial.  This adds the same b/B options to


git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoMake chan_local use the API call instead of inlining its own version.
Richard Mudgett [Mon, 14 May 2012 21:34:14 +0000 (21:34 +0000)]
Make chan_local use the API call instead of inlining its own version.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoFix two more coverity constant expression result findings.
Mark Michelson [Mon, 14 May 2012 20:15:33 +0000 (20:15 +0000)]
Fix two more coverity constant expression result findings.

These correspond to findings 0 and 1 in the core findings of

After contacting Mark Spencer, he was unsure of what the intent
behind these lines of code were, so they are being axed.

For Asterisk 1.8 and 10, the output of debugging DUNDi frames
will not be changed, but for trunk the "Retry" portion will
be omitted since it does not properly distinguish retransmissions
from initial frames.

(closes issue ASTERISK-19649)
Reported by Matthew Jordan

Merged revisions 366409 from

Merged revisions 366412 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoCommit framework for HANGUPCAUSE (replacement for SIP_CAUSE)
Kinsey Moore [Mon, 14 May 2012 19:44:27 +0000 (19:44 +0000)]
Commit framework for HANGUPCAUSE (replacement for SIP_CAUSE)

This is the starting point for the Asterisk 11: Who Hung Up work and provides
a framework which will allow channel drivers to report the types of hangup
cause information available in SIP_CAUSE without incurring the overhead of the
MASTER_CHANNEL dialplan function. The initial implementation only includes
cause generation for chan_sip and does not include cause code translation

This change deprecates SIP_CAUSE and replaces its method of reporting cause
codes with the new framework. This change also deprecates the 'storesipcause'
option in sip.conf.

(Closes issue SWP-4221)

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoFix broken reinvite glare scenario.
Mark Michelson [Mon, 14 May 2012 19:27:58 +0000 (19:27 +0000)]
Fix broken reinvite glare scenario.

To make a long story short, reinvite glares were broken
because Asterisk would invert the To and From headers
when ACKing a 491 response.

The reason was because the initreq of the dialog was being
changed to the incoming glared reinvite instead of being
set to the outgoing glared reinvite. This change has three

* In handle_incoming, we never will reject an ACK because it
has a to-tag present, even if we think the request may be out
of dialog.
* In handle_request_invite, we do not change the initreq when
receiving a reinvite to which we will respond with a 491.
* In handle_request_invite, several superflous settings up
pendinginvite have been removed since this is dones automatically
by transmit_response_reliable


Merged revisions 366389 from

Merged revisions 366390 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoMacro AST_PKG_CONFIG_CHECK to use chkconfig
Tzafrir Cohen [Mon, 14 May 2012 13:42:49 +0000 (13:42 +0000)]
Macro AST_PKG_CONFIG_CHECK to use chkconfig

AST_PKG_CONFIG_CHECK: Similar to AST_EXT_LIB_CHECK, but simply uses
pkg-config data.

This simple version only uses pkg-config(1)'s tests.

This commit also uses the macro to test for GTK2 and GMIME (instead of
the current direct usage of pkg-config).


git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoformat_mp3: Fix a possible crash in mp3_read().
Russell Bryant [Sat, 12 May 2012 00:03:42 +0000 (00:03 +0000)]
format_mp3: Fix a possible crash in mp3_read().

This patch fixes a potential crash in mp3_read() by not assuming that
dbuf has enough data to finish filling up the output buffer.  The patch
also makes sure that the dbuf state gets reset after we know we read
everything out of it already.

In passing, this patch includes some other cleanups of this module,
including stripping trailing whitespace, formatting fixes based on
coding guidelines, and removing a number of unused members from the
private state struct.

(closes issue ASTERISK-19761)
Reported by: Chris Maciejewsk
Tested by: Chris Maciejewsk

Merged revisions 366296 from

Merged revisions 366297 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years ago* Made ast_change_name() hold the channels container lock while changing the channel...
Richard Mudgett [Thu, 10 May 2012 23:49:07 +0000 (23:49 +0000)]
* Made ast_change_name() hold the channels container lock while changing the channel name.

* Eliminate redundant list not empty check in clone_variables().

Merged revisions 366240 from

Merged revisions 366241 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoTweak app_dial predial documentation.
Richard Mudgett [Thu, 10 May 2012 21:38:12 +0000 (21:38 +0000)]
Tweak app_dial predial documentation.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoRun predial routine on local;2 channel where you would expect.
Richard Mudgett [Thu, 10 May 2012 21:29:41 +0000 (21:29 +0000)]
Run predial routine on local;2 channel where you would expect.

Before this patch, the predial routine executes on the ;1 channel of a
local channel pair.  Executing predial on the ;1 channel of a local
channel pair is of limited utility.  Any channel variables set by the
predial routine executing on the ;1 channel will not be available when the
local channel executes dialplan on the ;2 channel.

* Create ast_pre_call() and an associated pre_call() technology callback
to handle running the predial routine.  If a channel technology does not
provide the callback, the predial routine is simply run on the channel.


git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoResolve FORWARD_NULL static analysis warnings
Kinsey Moore [Thu, 10 May 2012 20:56:09 +0000 (20:56 +0000)]
Resolve FORWARD_NULL static analysis warnings

This resolves core findings from ASTERISK-19650 numbers 0-2, 6, 7, 9-11, 14-20,
22-24, 28, 30-32, 34-36, 42-56, 82-84, 87, 89-90, 93-102, 104, 105, 109-111,
and 115. Finding numbers 26, 33, and 29 were already resolved.  Those skipped
were either extended/deprecated or in areas of code that shouldn't be

(Closes issue ASTERISK-19650)

Merged revisions 366167 from

Merged revisions 366168 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoCoverity Report: Fix issues for error type CHECKED_RETURN for core
Jonathan Rose [Thu, 10 May 2012 18:35:14 +0000 (18:35 +0000)]
Coverity Report: Fix issues for error type CHECKED_RETURN for core

(issue ASTERISK-19658)
Reported by: Matt Jordan

Merged revisions 366094 from

Merged revisions 366106 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoClose the proper tcptls_session when session creation fails.
Mark Michelson [Thu, 10 May 2012 16:22:36 +0000 (16:22 +0000)]
Close the proper tcptls_session when session creation fails.

(issue AST-998)
Reported by: Thomas Arimont
Tested by: Thomas Arimont

Merged revisions 366052 from

Merged revisions 366053 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoCoverity Report: Fix issues for error type UNINIT in Core supported modules
Jonathan Rose [Thu, 10 May 2012 15:57:26 +0000 (15:57 +0000)]
Coverity Report: Fix issues for error type UNINIT in Core supported modules

(issue ASTERISK-19652)
Reported by: Matt Jordan

Merged revisions 366048 from

Merged revisions 366049 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoBlock on frameout if the hardware has enough samples to complete a frame.
Jonathan Rose [Wed, 9 May 2012 19:28:47 +0000 (19:28 +0000)]
Block on frameout if the hardware has enough samples to complete a frame.

Fixes some problems with skipping audio in elaborate scenarios involving
multiple codecs by making codec_dahdi operate in a more synchronous
fashion similar to codec_g729. This change also fixes the use of file
conversion tools from Asterisk's CLI. This change may cause the thread
responsible for transcoding audio to block briefly (Shaun Ruffell describes
this as 'several milliseconds') while waiting for the hardware transcoder.

(closes issue ASTERISK-19643)
reported by: Shaun Ruffell
uploaded by Shaun Ruffell (license 5417)

Merged revisions 365989 from

Merged revisions 365990 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agopass BUILD_CFLGAS and BUILD_LDFLAGS to menuselect
Tzafrir Cohen [Wed, 9 May 2012 19:26:08 +0000 (19:26 +0000)]
pass BUILD_CFLGAS and BUILD_LDFLAGS to menuselect

Allow menuselect to get its set of CFLAGS and LDFLAGS through the
environment of Make:

  make BUILD_CFLAGS="whatever" BUILD_LDFLAGS="whatever"


git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoImprove FollowMe accept/decline DTMF string matching.
Richard Mudgett [Wed, 9 May 2012 17:58:11 +0000 (17:58 +0000)]
Improve FollowMe accept/decline DTMF string matching.

If you hit the wrong DTMF digit trying to accept/decline a FollowMe call,
you had to wait for the prompt to repeat to try again.

* Make FollowMe compare the last DTMF digits received to the
accept/decline matching strings.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoPrevent sip_pvt refleak when an ast_channel outlasts its corresponding sip_pvt.
Mark Michelson [Wed, 9 May 2012 16:36:10 +0000 (16:36 +0000)]
Prevent sip_pvt refleak when an ast_channel outlasts its corresponding sip_pvt.

chan_sip was coded under the assumption that a SIP dialog with an owner channel
will always be destroyed after the owner channel has been hung up.

However, there are situations where the SIP dialog can time out and auto destruct
before the corresponding channel has hung up. A typical example of this would be
if the 'h' extension in the dialplan takes a long time to complete. In such cases,
__sip_autodestruct() would complain about the dialog being auto destroyed with
an owner channel still in place. The problem is that even once the owner channel
was hung up, the sip_pvt would still be linked in its ao2_container because nothing
would ever unlink it.

The fix for this is that if __sip_autodestruct() is called for a sip_pvt that still
has an owner channel in place, the destruction is rescheduled for 10 seconds in the
future. This will continue until the owner channel is finally hung up.

(closes issue ASTERISK-19425)
reported by David Cunningham
    ASTERISK-19425.patch uploaded by Mark Michelson (License #5049)

(closes issue ASTERISK-19455)
reported by Dean Vesvuio
Tested by Dean Vesvuio

Merged revisions 365896 from

Merged revisions 365898 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoKeep answered FollowMe calls until call accepted or last step times out.
Richard Mudgett [Wed, 9 May 2012 02:35:29 +0000 (02:35 +0000)]
Keep answered FollowMe calls until call accepted or last step times out.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoPut winning FollowMe outgoing call on hold if the caller put it on hold.
Richard Mudgett [Wed, 9 May 2012 01:59:14 +0000 (01:59 +0000)]
Put winning FollowMe outgoing call on hold if the caller put it on hold.

The FollowMe caller call leg is usually answered and listening to MOH.
The caller could put the call on hold while FollowMe is looking for a
winner.  The winning outgoing call is now immediately placed on hold if
the caller has put the call on hold before the winning call was selected.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoRestructure how the FollowMe outgoing channel list is handled.
Richard Mudgett [Wed, 9 May 2012 01:36:07 +0000 (01:36 +0000)]
Restructure how the FollowMe outgoing channel list is handled.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoAddendum to -r365766. Since it is no longer allocated.
Richard Mudgett [Tue, 8 May 2012 22:46:14 +0000 (22:46 +0000)]
Addendum to -r365766.  Since it is no longer allocated.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoMake FollowMe findmeexec() put the list head on the stack instead of mallocing it.
Richard Mudgett [Tue, 8 May 2012 22:25:42 +0000 (22:25 +0000)]
Make FollowMe findmeexec() put the list head on the stack instead of mallocing it.

Why this tiny struct was malloced instead of the 28k struct in the last
change is beyond me.  Just doing my part to help stamp out sillyness.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoAdd interrupt ('I') command to ExternalIVR.
Sean Bright [Tue, 8 May 2012 21:46:21 +0000 (21:46 +0000)]
Add interrupt ('I') command to ExternalIVR.

Sending the 'I' command from an external process will cause the current playlist
to be cleared, including stopping any audio file that is currently playing.  This
is useful when you want to interrupt audio playback only when specific DTMF is
entered by the caller.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoMake FollowMe app_exec() not declare a 28k struct on the stack.
Richard Mudgett [Tue, 8 May 2012 21:41:58 +0000 (21:41 +0000)]
Make FollowMe app_exec() not declare a 28k struct on the stack.

Helping to stamp out stack abuse.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years agoSimplify findmeexec() parameter passing.
Richard Mudgett [Tue, 8 May 2012 21:15:58 +0000 (21:15 +0000)]
Simplify findmeexec() parameter passing.

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3

10 years ago* Fix FollowMe memory leak on error paths in app_exec().
Richard Mudgett [Tue, 8 May 2012 20:32:11 +0000 (20:32 +0000)]
* Fix FollowMe memory leak on error paths in app_exec().

* Fix FollowMe leaving recorded caller name file on error paths in

* Use correct buffer dimension define in struct fm_args.namerecloc[].
This fixes unexpected namerecloc filename length restriction.

Merged revisions 365692 from

Merged revisions 365701 from

git-svn-id: 65c4cc65-6c06-0410-ace0-fbb531ad65f3