10 years agoEnsure that pvt cause information does not break native bridging
Kinsey Moore [Tue, 19 Jun 2012 21:13:41 +0000 (21:13 +0000)]
Ensure that pvt cause information does not break native bridging

Channel drivers that allow native bridging need to handle
AST_CONTROL_PVT_CAUSE_CODE frames and previously did not handle them
properly, usually breaking out of the native bridge. This change
corrects that behavior and exposes the available cause code information
to the dialplan while native bridges are in place. This required
exposing the HANGUPCAUSE hash setter outside of channel.c, so
additional documentation has been added.

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

10 years agoFix request routing issue when outboundproxy is used.
Mark Michelson [Tue, 19 Jun 2012 15:44:42 +0000 (15:44 +0000)]
Fix request routing issue when outboundproxy is used.

Asterisk was incorrectly setting the destination of CANCELs
and ACKs for error responses to the URI of the initial INVITE.
This resulted in further requests, such as INVITEs with authentication
credentials, to be routed incorrectly. Instead, when these CANCEL
or ACKs are to be sent, we should simply keep the destination the
same as what it previously was. There is no need to alter it any.

(closes issue ASTERISK-20008)
Reported by Marcus Hunger
ASTERISK-20008.patch uploaded by Mark Michelson (license #5049)

Merged revisions 369066 from

Merged revisions 369067 from

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

10 years agoFix AST_CONTROL_PVT_CAUSE_CODE handling
Kinsey Moore [Mon, 18 Jun 2012 22:56:01 +0000 (22:56 +0000)]

When the IAX2 Who Hung Up? changes were added, they uncovered a bug in
the way AST_CONTROL_PVT_CAUSE_CODE was handled in
feature_request_and_dial().  This particular frame subtype was being
treated like more terminal control frames causing the function to be
exited prematurely.

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

10 years agoFix monitoring calls put in a parking lot.
Richard Mudgett [Mon, 18 Jun 2012 18:25:22 +0000 (18:25 +0000)]
Fix monitoring calls put in a parking lot.

* Fix a regression that was introduced by -r366167 which effectively
disabled monitoring parked calls.

(closes issue ASTERISK-20012)
Reported by: sdolloff
Tested by: rmudgett

Merged revisions 369043 from

Merged revisions 369044 from

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

10 years agoVarious small chan_skinny fixes and cleanup
Damien Wedhorn [Fri, 15 Jun 2012 21:18:56 +0000 (21:18 +0000)]
Various small chan_skinny fixes and cleanup

Added test to skinny_register to only allow device to register against
a device that is not already registered.

Addback l->device test for skinny_show_lines. Fixes segfault if a line
is configured but not configured to a device. Reverses part of r368680.

Removed redundant l->device tests in subsubstate and dumpsub. l->device
will always be valid if these routines are called. Reverses 368948 -
discussed with mjordan on irc.

Some indentation cleanup.

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

10 years agoAllow chan_sip to decline unwanted media streams
Kinsey Moore [Fri, 15 Jun 2012 17:13:20 +0000 (17:13 +0000)]
Allow chan_sip to decline unwanted media streams

This change replaces the static array of four representable media
streams with an AST_LIST so that chan_sip can keep track of offered
media streams.  This allows chan_sip to deal with offers containing
multiple same-type streams and many other situations without rejecting
the SDP offer in its entirety, yet still generating a valid response.
This also covers cases where Asterisk can not comprehend the offer if
it is in the correct format.

Previously, chan_sip would reject SDP offers or entirely ignore
individual stream offers in an effort to be more compatible which
would often result in invalid SDP responses.


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

10 years agoFix voicemail API tests by using the correct argument order for create/destroy.
Jason Parker [Fri, 15 Jun 2012 16:30:58 +0000 (16:30 +0000)]
Fix voicemail API tests by using the correct argument order for create/destroy.

Merged revisions 369024 from

Merged revisions 369026 from

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

10 years agoMultiple revisions 369001-369002
Kevin P. Fleming [Fri, 15 Jun 2012 16:20:16 +0000 (16:20 +0000)]
Multiple revisions 369001-369002

  r369001 | kpfleming | 2012-06-15 10:56:08 -0500 (Fri, 15 Jun 2012) | 11 lines

  Add support-level indications to many more source files.

  Since we now have tools that scan through the source tree looking for files
  with specific support levels, we need to ensure that every file that is
  a component of a 'core' or 'extended' module (or the main Asterisk binary)
  is explicitly marked with its support level. This patch adds support-level
  indications to many more source files in tree, but avoids adding them to
  third-party libraries that are included in the tree and to source files
  that don't end up involved in Asterisk itself.
  r369002 | kpfleming | 2012-06-15 10:57:14 -0500 (Fri, 15 Jun 2012) | 3 lines

  Add a script to enable finding source files without support-levels defined.

Merged revisions 369001-369002 from

Merged revisions 369005 from

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

10 years agoAdd HANGUPCAUSE hash support to IAX2
Kinsey Moore [Fri, 15 Jun 2012 16:17:12 +0000 (16:17 +0000)]
Add HANGUPCAUSE hash support to IAX2

Continuing with the Who Hung Up? project for Asterisk 11, this adds
support to IAX2 for the HANGUPCAUSE hash.

Additionally, this breaks out some functionality in frame.c for getting
information about frame types and subclasses.

(issue SWP-4222)

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

10 years agoRemove some symbol exports that got missed in the removal of global symbols.
Jason Parker [Fri, 15 Jun 2012 15:33:41 +0000 (15:33 +0000)]
Remove some symbol exports that got missed in the removal of global symbols.

(issue AST-807)
(issue AST-901)
(issue AST-908)

Merged revisions 368998 from

Merged revisions 368999 from

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

10 years agoRemove remaining properties mmichelson left laying around from phones branch merge.
Richard Mudgett [Fri, 15 Jun 2012 00:55:43 +0000 (00:55 +0000)]
Remove remaining properties mmichelson left laying around from phones branch merge.

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

10 years agoAllow non-normal execution routines to be able to run on hungup channels.
Richard Mudgett [Thu, 14 Jun 2012 23:22:53 +0000 (23:22 +0000)]
Allow non-normal execution routines to be able to run on hungup channels.

* Make non-normal dialplan execution routines be able to run on a hung up
channel.  This is preparation work for hangup handler routines.

* Fixed ability to support relative non-normal dialplan execution
routines.  (i.e., The context and exten are optional for the specified
dialplan location.) Predial routines are the only non-normal routines that
it makes sense to optionally omit the context and exten.  Setting a hangup
handler also needs this ability.

* Fix Return application being able to restore a dialplan location
exactly.  Channels without a PBX may not have context or exten set.

* Fixes non-normal execution routines like connected line interception and
predial leaving the dialplan execution stack unbalanced.  Errors like
missing Return statements, popping too many stack frames using StackPop,
or an application returning non-zero could leave the dialplan stack

* Fixed the AGI gosub application so it cleans up the dialplan execution
stack and handles the autoloop priority increments correctly.

* Eliminated the need for the gosub_virtual_context return location.


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

10 years agoMake the Hangup application set a softhangup flag.
Richard Mudgett [Thu, 14 Jun 2012 22:57:21 +0000 (22:57 +0000)]
Make the Hangup application set a softhangup flag.

The Hangup application used to just return -1 to cause normal dialplan
execution to hangup a channel.  For the non-normal execution routines like
predial and connected-line interception routines, the hangup request would
exit the routine early but otherwise be ignored.

* Made the Hangup application not allow setting a cause code of zero.  A
zero cause code is not defined.

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

10 years agoMove vm defines to group them better.
Richard Mudgett [Thu, 14 Jun 2012 20:49:28 +0000 (20:49 +0000)]
Move vm defines to group them better.

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

10 years agoMultiple revisions 368963,368965
Jason Parker [Thu, 14 Jun 2012 19:40:11 +0000 (19:40 +0000)]
Multiple revisions 368963,368965

  r368963 | qwell | 2012-06-14 13:47:03 -0500 (Thu, 14 Jun 2012) | 14 lines

  Remove global symbol requirement from app_voicemail.

  This uses the existing "function installation" stuff that already existed for
  other functions, like getting message counts.

  (closes issue AST-807)
  (issue AST-901)
  (issue AST-908)


  Merged revisions 368962 from
  r368965 | qwell | 2012-06-14 14:04:57 -0500 (Thu, 14 Jun 2012) | 11 lines

  These functions that were moved need to be static.

  Also wrap test functions in a #ifdef.

  (issue AST-807)
  (issue AST-901)
  (issue AST-908)

  Merged revisions 368964 from

Merged revisions 368963,368965 from

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

10 years agoAST-2012-009: Fix crash in chan_skinny due to Key Pad Button Message handling
Matthew Jordan [Thu, 14 Jun 2012 17:34:10 +0000 (17:34 +0000)]
AST-2012-009: Fix crash in chan_skinny due to Key Pad Button Message handling

AST-2012-008 (r367844) fixed a denial of service attack exploitable in the
Skinny channel driver that occurred when certain messages are sent after a
previously registered station sends an Off Hook message.  Unresolved in that
patch is an issue in the Asterisk 10 releases, wherein, if a Station Key
Pad Button Message is processed after an Off Hook message, the channel driver
will inappropriately dereference a NULL pointer.

This patch fixes those places where the message handling or the channel
callback functions would attempt to dereference the line's pointer to the

(issue ASTERISK-19905)
Reported by: Christoph Hebeisen
Tested by: mjordan, Christoph Hebeisen
  AST-2012-009-10.diff uploaded by mjordan (license 6283)

Merged revisions 368947 from

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

10 years agoRevert Makefile change to remove embedding
Mark Michelson [Thu, 14 Jun 2012 15:28:02 +0000 (15:28 +0000)]
Revert Makefile change to remove embedding

The change has resulted in a linking error for certain versions
of GCC. This is much worse than the original issue, so for now,
temporarily revert the change. A more thorough change will be
sought out.

Merged revisions 368927 from

Merged revisions 368928 from

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

10 years agoAdd a post_apply callback to the Config Options API
Terry Wilson [Thu, 14 Jun 2012 13:41:47 +0000 (13:41 +0000)]
Add a post_apply callback to the Config Options API

This adds a callback that only fires when changes have been successfully
applied via the Config Options API.


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

10 years agoAdd filename alias support to the Config Options API
Terry Wilson [Thu, 14 Jun 2012 13:35:07 +0000 (13:35 +0000)]
Add filename alias support to the Config Options API

This adds the ability to handle a single filename alias for a config
file. This is useful if a config filename has changed, but the old
filename should be supported for backwards compatibility.


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

10 years agoFix a deadlock that occurs when func_volume is used on a local channel.
Mark Michelson [Wed, 13 Jun 2012 21:17:13 +0000 (21:17 +0000)]
Fix a deadlock that occurs when func_volume is used on a local channel.

This was discovered by trying to perform a call forward to an extension
that makes use of func_volume. When the local channel is optimized away,
the datastore on the local;2 channel would have its audiohook destroyed
rather than detaching the audiohook from the channel and then destroying

With this patch, func_volume's datastore destructor takes the proper
route of detaching the audiohook and then destroying it.

(closes issue ASTERISK-19611)
reported by Volker Sauer
ASTERISK-19611.patch uploaded by Mark Michelson (license #5049)

Merged revisions 368898 from

Merged revisions 368899 from

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

10 years agoMark res_smdi/res_adsi as 'core' supported modules
Matthew Jordan [Wed, 13 Jun 2012 20:28:07 +0000 (20:28 +0000)]
Mark res_smdi/res_adsi as 'core' supported modules

Recently, various issues surrounding weak symbols have caused problems with
modules that rely on that feature to be enabled in menuselect.  This includes
app_voicemail and chan_dahdi, as they both rely upon res_smdi and res_adsi,
which, in certain circumstances, may not be enabled by default in menuselect.

Because res_smdi/res_adsi are dependencies for chan_dahdi/app_voicemail, this
patch marks both as 'core' supported modules.  This will allow both
app_voicemail and chan_dahdi to be enabled as well, regardless of whether or
not that system supports weak symbols.

(issue AST-900)
Reported by: Thomas Arimont

(issue AST-885)
Reported by: Denis Alberto Martinez

Merged revisions 368894 from

Merged revisions 368895 from

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

10 years agoRemove forced linking of res_adsi.o
Mark Michelson [Wed, 13 Jun 2012 19:51:08 +0000 (19:51 +0000)]
Remove forced linking of res_adsi.o

In GCC 4.5+ the result is that Asterisk has a phantom
module loaded at startup, claiming to be res_adsi.

(closes issue ASTERISK-19920)
reported by Leif Madsen

Merged revisions 368873 from

Merged revisions 368885 from

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

10 years agoReplace MODULES_DIR with ASTMODDIR in Makefile's INSTALLDIRS
Matthew Jordan [Wed, 13 Jun 2012 14:55:30 +0000 (14:55 +0000)]

Post Asterisk 10, the MODULES_DIR variable no longer exists, and was replaced

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

10 years agoDo not install empty directories; add ASTLIBDIR
Matthew Jordan [Wed, 13 Jun 2012 14:31:24 +0000 (14:31 +0000)]
Do not install empty directories; add ASTLIBDIR

r368830 modified the installation script to only create a directory if that
directory does not exist.  If some directory variable was empty, it would attempt
to create the empty location.  It also failed to create the ASTLIBDIR directory.
This patch fixes it such that the correct directories are made and only created if
a value specifying them actually exists.

Merged revisions 368852 from

Merged revisions 368853 from

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

10 years agoDo not perform install on existing directories
Matthew Jordan [Tue, 12 Jun 2012 18:41:50 +0000 (18:41 +0000)]
Do not perform install on existing directories

If a directory already exists, performing a 'make install' will remove the
permissions associated with the current directory and replace them with the
permissions of the user executing the install.

This patch changes this behavior to only perform an install on the directory
if the directory does not exist.  Thus, if a user later changes the permissions
on that directory, those permissions will be preserved in subsequent installs.



(closes issue ASTERISK-19492)
Reported by: Karl Fife
Tested by: Paul Belanger, Tilghman Lesher
  ASTERISK-19492 by pabelanger
  (uploaded by mjordan)

Merged revisions 368830 from

Merged revisions 368831 from

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

10 years agoSet the Caller ID "tag" on peers even if remote party information is present.
Mark Michelson [Tue, 12 Jun 2012 15:46:48 +0000 (15:46 +0000)]
Set the Caller ID "tag" on peers even if remote party information is present.

On incoming calls, we were setting the cid_tag on the dialog only if there was
no remote party information (Remote-Party-ID or P-Asserted-Identity) present.
The Caller ID tag is an invented parameter, though, and should be set no matter
the circumstance.

(closes issue ASTERISK-19859)
Reported by Thomas Arimont
(closes issue AST-884)
Reported by Trey Blancher

Merged revisions 368807 from

Merged revisions 368808 from

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

10 years agoUpdate merge property information
Matthew Jordan [Tue, 12 Jun 2012 14:09:41 +0000 (14:09 +0000)]
Update merge property information

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

10 years agoFix deadlock in SIP transfers that involve a REFER request
Matthew Jordan [Tue, 12 Jun 2012 14:07:13 +0000 (14:07 +0000)]
Fix deadlock in SIP transfers that involve a REFER request

In r367163, "send to voicemail" functionality was added to the SIP channel
driver.  This required updating the party redirecting information for the
channel based on the headers provided in the REFER request.  When the
redirecting party information is updated on the channel, a call to
ast_indicate_data occurs.  Because handle_request_refer still had the sip_pvt
locked, a deadlock could occur between the pbx_thread and the do_monitor thread
servicing the REFER request.

This patch preserves the proper locking order between the channel and the
sip_pvt by ensuring that the sip_pvt is unlocked prior to updating the party
redirecting information on the channel.

(closes issue AST-903)
Reported by: Matt Jordan
  jira_ast_903_trunk.patch by rmudgett (license 5621)

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

10 years agoParse ANI2 information from SIP From header parameters
Kinsey Moore [Tue, 12 Jun 2012 04:03:23 +0000 (04:03 +0000)]
Parse ANI2 information from SIP From header parameters

ANI2 information is now parsed out of SIP From headers when present in
the oli, isup-oli, and ss7-oli parameters and is available via the
CALLERID(ani2) dialplan function.

(closes issue ASTERISK-19912)
Patch-by: Rob Gagnon

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

10 years agoFix deadlock potential with ast_set_hangupsource() calls.
Richard Mudgett [Mon, 11 Jun 2012 17:34:08 +0000 (17:34 +0000)]
Fix deadlock potential with ast_set_hangupsource() calls.

Calling ast_set_hangupsource() with the channel lock held can result in a
deadlock because the function also locks the bridged channel.

(issue ASTERISK-19537)

(closes issue AST-891)
Reported by: Guenther Kelleter
Tested by: Guenther Kelleter

(closes issue ASTERISK-19801)
Reported by: Alec Davis

Merged revisions 368759 from

Merged revisions 368760 from

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

10 years agoFix coverity UNUSED_VALUE findings in core support level files
Kinsey Moore [Mon, 11 Jun 2012 15:23:30 +0000 (15:23 +0000)]
Fix coverity UNUSED_VALUE findings in core support level files

Most of these were just saving returned values without using them and
in some cases the variable being saved to could be removed as well.

(issue ASTERISK-19672)

Merged revisions 368738 from

Merged revisions 368739 from

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

10 years agoRecorded merge of revisions 368721 from
Kinsey Moore [Mon, 11 Jun 2012 14:12:08 +0000 (14:12 +0000)]
Recorded merge of revisions 368721 from

Fix compilation in dev-mode

Backport a compilation fix in md5.c from trunk that only showed up in
dev-mode under certain compiler versions.

Merged revisions 368719 from

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

10 years agoFix error paths in action_hangup() for AMI Hangup action.
Richard Mudgett [Fri, 8 Jun 2012 21:08:17 +0000 (21:08 +0000)]
Fix error paths in action_hangup() for AMI Hangup action.

* Check allocation function return values for failure.  Crashing is bad.

* Tweak ast_regex_string_to_regex_pattern() parameters for proper ast_str

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

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