8 years agores_musiconhold: Fix reference leaks caused when reloading with REF_DEBUG set
Jonathan Rose [Thu, 21 Aug 2014 21:35:58 +0000 (21:35 +0000)]
res_musiconhold: Fix reference leaks caused when reloading with REF_DEBUG set

Due to a faulty function for debugging reference decrementing, it was possible
to reduce the refcount on the wrong object if two moh classes of the same name
were in the moh class container.

(closes issue ASTERISK-22252)
Reported by: Walter Doekes
    18_moh_debug_ref_patch.diff Uploaded by Jonathan Rose (license 6182)

Merged revisions 398937 from

Merged revisions 421777 from

Merged revisions 421779 from

Merged revisions 421788 from

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

8 years agoLet's try checking the name and number, instead of the name twice.
Mark Michelson [Thu, 21 Aug 2014 21:28:16 +0000 (21:28 +0000)]
Let's try checking the name and number, instead of the name twice.

Merged revisions 421789 from

Merged revisions 421790 from

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

8 years agoImprove consistency of party ID privacy usage.
Mark Michelson [Thu, 21 Aug 2014 21:19:06 +0000 (21:19 +0000)]
Improve consistency of party ID privacy usage.

Prior to this change, the Remote-Party-ID header took the position of
"If caller name and number are not explicitly allowed, then they are private"
and P-Asserted-Identity took the position of
"Caller name and number are only private if marked explicitly so"

Now both mechanisms of conveying party identification use the former approach.

Merged revisions 421778 from

Merged revisions 421783 from

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

8 years agochan_sip: Don't use port derived from fromdomain if it isn't set
Matthew Jordan [Thu, 21 Aug 2014 17:35:15 +0000 (17:35 +0000)]
chan_sip: Don't use port derived from fromdomain if it isn't set

If a user does not provide a port in the fromdomain setting, chan_sip will set
the fromdomainport to STANDARD_SIP_PORT (5060). The fromdomainport value will
then get used unilaterally in certain places. This causes issues with TLS,
where the default port is expected to be 5061.

This patch modifies chan_sip such that fromdomainport is only used if it is
not the standard SIP port; otherwise, the port from the SIP pvt's recorded
self IP address is used.


ASTERISK-24178 #close
Reported by: Elazar Broad
  fromdomainport_fix.diff uploaded by Elazar Broad (License 5835)

Merged revisions 421717 from

Merged revisions 421718 from

Merged revisions 421719 from

Merged revisions 421720 from

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

8 years agoARI: Fix implicit answer when playback is initiated on unanswered channel
Matthew Jordan [Thu, 21 Aug 2014 15:25:25 +0000 (15:25 +0000)]
ARI: Fix implicit answer when playback is initiated on unanswered channel

When issuing a POST /channels/{channel_id}/play on a channel that is not
yet answered, ARI is supposed to:
* Queue up an AST_CONTROL_PROGRESS on the channel
* Start up the playback of the media

Instead, we sneak an answer on the channel right before starting playing media.

This is due to ARI's usage of control_streamfile. This function implicitly
answers the channel (and doesn't give ARI the option to stop it). The answering
of the channel here is probably unnecessary:
* app_voicemail, by far the biggest consumer of this function, always answers
  the channels anyway
* control stream file (in res_agi) and ControlPlayback probably shouldn't be
  implicitly answering the channel. Answering should not be tied directly to
  playing back media.

As it turns out, the answering of the channel here is pretty old:
356042    twilson       if (ast_channel_state(chan) != AST_STATE_UP) {
  3087      anthm               res = ast_answer(chan);
180259   tilghman       }

(As in, ancient?)

Note that others ran into this problem and commented about it on various
mailing lists.


ASTERISK-24229 #close
Reported by: Matt Jordan

Merged revisions 421695 from

Merged revisions 421696 from

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

8 years agoClean up files that do not end with newlines
Matthew Jordan [Thu, 21 Aug 2014 14:52:28 +0000 (14:52 +0000)]
Clean up files that do not end with newlines

Trivial patch to add new lines to several files missing them. This fixes
warnings when compiling with gcc 4.1.2 on CentOS 5.

ASTERISK-24245 #close
Reported by: Shaun Ruffell
  0002-Trivial-addition-of-newlines-at-end-of-three-files.patch uploaded by Shaun Ruffell (License 5417)

Merged revisions 421677 from

Merged revisions 421678 from

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

8 years agouri: Quiet warning about type qualifiers ignored on function return type
Matthew Jordan [Thu, 21 Aug 2014 14:42:12 +0000 (14:42 +0000)]
uri: Quiet warning about type qualifiers ignored on function return type

This patch fixes gcc warnings that occur due to the type qualifier 'const'
being ignored on a return type of int.

ASTERISK-24246 #close
Reported by: Shaun Ruffell
  0001-main-uri-Quiet-warning-about-ignored-attribute-on-re.patch uploaded by Shaun Ruffell (License 5417)

Merged revisions 421675 from

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

8 years agochan_pjsip: Update media translation paths when new SDP negotiated.
Richard Mudgett [Wed, 20 Aug 2014 22:52:44 +0000 (22:52 +0000)]
chan_pjsip: Update media translation paths when new SDP negotiated.

On a SIP reinvite that changes media strams, the PJSIP channel driver was
flooding the log with "Asked to transmit frame type %s, while native
formats is %s" warnings.

* Fixes PJSIP not setting up translation paths when the formats change on
a reinvite.  AFS-63 was effectively reintroduced because of the media
formats work.  res_pjsip_sdp_rtp.c:set_caps()

* Improved the unexpected frame format WARNING message to include more

* Added protective locking while altering formats on a channel.  Reworked
set_format() to simplify and protect the formats under manipulation.

* Restored some code that got lost in the media_formats work.
(channel.c:set_format() and res_pjsip_sdp_rtp.c:set_caps())

AFS-137 #close
Reported by: Mark Michelson


Merged revisions 421645 from

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

8 years agocli.c: Fix tab completion of "module load" when MALLOC_DEBUG is enabled.
Richard Mudgett [Wed, 20 Aug 2014 22:23:23 +0000 (22:23 +0000)]
cli.c: Fix tab completion of "module load" when MALLOC_DEBUG is enabled.

filename_completion_function() returns memory that was not allocated by
the MALLOC_DEBUG allocation tracker so the memory must be freed by

Merged revisions 421600 from

Merged revisions 421602 from

Merged revisions 421608 from

Merged revisions 421616 from

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

8 years agoSet the role for inbound subscriptions correctly.
Mark Michelson [Wed, 20 Aug 2014 20:41:04 +0000 (20:41 +0000)]
Set the role for inbound subscriptions correctly.

This was causing the AMI show_subscriptions test in
the testsuite to fail since all subscriptions were being
seen as subscribers instead of notifiers.

Merged revisions 421585 from

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

8 years agoMove evaluation of set_var options in pjsip to the end of channel initialization.
Mark Michelson [Wed, 20 Aug 2014 20:04:43 +0000 (20:04 +0000)]
Move evaluation of set_var options in pjsip to the end of channel initialization.

This allows for set_var to override certain defaults such as caller ID and codec
values. This also fixes a test suite regression. The "set_var" test suite test attempted
to use set_var to override caller ID, but a recent change caused that to no longer work.

Merged revisions 421565 from

Merged revisions 421566 from

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

8 years agoStasis: Add information to blind transfer event
Kinsey Moore [Wed, 20 Aug 2014 13:06:33 +0000 (13:06 +0000)]
Stasis: Add information to blind transfer event

When a blind transfer occurs that is forced to create a local channel
pair to satisfy the transfer request, information about the local
channel pair is not published. This adds a field to describe that
channel to the blind transfer message struct so that this information
is conveyed properly to consumers of the blind transfer message.

This also fixes a bug in which Stasis() was unable to properly identify
the channel that was replacing an existing Stasis-controlled channel
due to a blind transfer.

Reported by: Matt Jordan

Merged revisions 421537 from

Merged revisions 421538 from

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

8 years agoAMI: Add AllVariables parameter to Status
Kinsey Moore [Wed, 20 Aug 2014 12:39:39 +0000 (12:39 +0000)]
AMI: Add AllVariables parameter to Status

This adds the AllVariables parameter to the Status AMI action such that
if defined and set to "true", all channel variables will be reported in
the subsequent Status event(s). This parameter does not negate the
functionality of the "Variables" parameter so that global variables and
dialplan functions can be requested.


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

8 years agoAlter documentation for callerid_privacy to use correct values.
Mark Michelson [Tue, 19 Aug 2014 20:28:56 +0000 (20:28 +0000)]
Alter documentation for callerid_privacy to use correct values.

Merged revisions 421485 from

Merged revisions 421488 from

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

8 years agoFix compilation error on certain versions of GCC.
Mark Michelson [Tue, 19 Aug 2014 19:55:56 +0000 (19:55 +0000)]
Fix compilation error on certain versions of GCC.

Merged revisions 421447 from

Merged revisions 421448 from

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

8 years agoAMI Docs: Fix Status channel parameter optionality
Kinsey Moore [Tue, 19 Aug 2014 19:43:14 +0000 (19:43 +0000)]
AMI Docs: Fix Status channel parameter optionality

Merged revisions 421442 from

Merged revisions 421443 from

Merged revisions 421444 from

Merged revisions 421445 from

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

8 years agoARI: Fix a bug where /channels/{channelID}/continue doesn't execute PBX
Jonathan Rose [Tue, 19 Aug 2014 16:36:30 +0000 (16:36 +0000)]
ARI: Fix a bug where /channels/{channelID}/continue doesn't execute PBX

If /channels/{channelID}/continue is called on a channel that was originated
without a PBX (such as the ARI command POST channel with a stasis application
argument), the channel will not start dialplan execution. This patch will now
run the PBX out of the stasis execution if the channel doesn't currently have
an active PBX upon continuing.

ASTERISK-24043 #close
Reported by: Krandon Bruse
    stasis-continue.diff submitted by Krandon Bruse (license 6631)

Merged revisions 421416 from

Merged revisions 421423 from

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

8 years agochan_pjsip: Fix attended transfer connected line name update.
Richard Mudgett [Tue, 19 Aug 2014 16:16:03 +0000 (16:16 +0000)]
chan_pjsip: Fix attended transfer connected line name update.

A calls B
B answers
B SIP attended transfers to C
C answers, B and C can see each other's connected line information
B completes the transfer
A has number but no name connected line information about C
  while C has the full information about A

I examined the incoming and outgoing party id information handling of
chan_pjsip and found several issues:

* Fixed ast_sip_session_create_outgoing() not setting up the configured
endpoint id as the new channel's caller id.  This is why party A got
default connected line information.

* Made update_initial_connected_line() use the channel's CALLERID(id)
information.  The core, app_dial, or predial routine may have filled in or
changed the endpoint caller id information.

* Fixed chan_pjsip_new() not setting the full party id information
available on the caller id and ANI party id.  This includes the configured
callerid_tag string and other party id fields.

* Fixed accessing channel party id information without the channel lock

* Fixed using the effective connected line id without doing a deep copy
outside of holding the channel lock.  Shallow copy string pointers can
become stale if the channel lock is not held.

* Made queue_connected_line_update() also update the channel's
CALLERID(id) information.  Moving the channel to another bridge would need
the information there for the new bridge peer.

* Fixed off nominal memory leak in update_incoming_connected_line().

* Added pjsip.conf callerid_tag string to party id information from
enabled trust_inbound endpoint in caller_id_incoming_request().

AFS-98 #close
Reported by: Mark Michelson


Merged revisions 421400 from

Merged revisions 421403 from

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

8 years agoSkinny: Fixup compile warning for non dev-mode.
Damien Wedhorn [Mon, 18 Aug 2014 21:18:17 +0000 (21:18 +0000)]
Skinny: Fixup compile warning for non dev-mode.

Merged revisions 421376 from

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

8 years agofunc_config: Change 'Not Found' message from ERROR to DEBUG
George Joseph [Mon, 18 Aug 2014 20:20:59 +0000 (20:20 +0000)]
func_config: Change 'Not Found' message from ERROR to DEBUG

When you call the CONFIG dialplan function with the name of a variable that
doesn't exist in the target context you get an ERROR.  This does nothing but
clutter up the logs with messages that may be perfectly acceptable.  Just
because a variable wasn't in the context doesn't mean it's an error.  Maybei
t's optional or just needs to be defaulted or ignored.

This patch changes the log level from ERROR to DEBUG.  If a dialplan developer
wants to debug their dialplan they still canby setting the console debug level
as needed.

Tested by: George Joseph

Merged revisions 421327 from

Merged revisions 421328 from

Merged revisions 421329 from

Merged revisions 421337 from

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

8 years agoMultiple revisions 421311-421312
Matthew Jordan [Mon, 18 Aug 2014 01:14:51 +0000 (01:14 +0000)]
Multiple revisions 421311-421312

  r421311 | mjordan | 2014-08-17 20:11:28 -0500 (Sun, 17 Aug 2014) | 9 lines

  res/ari/resource_channels: Don't return allocation failure on failed function

  If a function fails to execute, it is most likely due to one of two reasons:
  (1) The function doesn't exist or can't be read from
  (2) The function is dangerous and is restricted based on the user's permissions

  Currently we return allocation failure, which is incorrect. This updates the
  reason code to more accurately reflect why the request failed.

  r421312 | mjordan | 2014-08-17 20:13:41 -0500 (Sun, 17 Aug 2014) | 4 lines

  res/ari/resource_channels: Fix compilation issue

  Forgot a parameter. Whoops.

Merged revisions 421311-421312 from

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

8 years agoImprove call forwarding reporting, especially with regards to ARI.
Matthew Jordan [Mon, 18 Aug 2014 00:57:01 +0000 (00:57 +0000)]
Improve call forwarding reporting, especially with regards to ARI.

This patch addresses a few issues:

1) The order of Dial events have been changed when performing a call forward.
   The order has now been altered to
    1) Dial begins dialing channel A.
    2) When A forwards the call to B, we issue the dial end event to channel
       A, indicating the dial is being canceled due to a forward to B.
    3) When the call to channel B occurs, we then issue a new dial begin to
       channel B.

2) Call forwards are now reported on the calling channel, not the peer channel.

3) AMI DialEnd events have been altered to display the extension the call is
   being forwarded to when relevant.

4) You can now get the values of channel variables for channels that are not
   currently in the Stasis application. This brings the retrieval of channel
   variables more in line with the rest of channel read operations since they
   may be performed on channels not in Stasis.

ASTERISK-24134 #close
Reported by Matt Jordan

ASTERISK-24138 #close
Reported by Matt Jordan

forward-shenanigans.diff uploaded by Matt Jordan (License #6283)


Merged revisions 420794 from

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

8 years agoapps/app_meetme: Fix crash when publishing MeetMe messages with no channel
Matthew Jordan [Sun, 17 Aug 2014 23:29:34 +0000 (23:29 +0000)]
apps/app_meetme: Fix crash when publishing MeetMe messages with no channel

The same function, meetme_stasis_generate_msg, handles creating and publishing
Stasis message both when there are channels in the MeetMe conference and when
there are no channels in the conference. When the performance improvement was
made to use cached snapshots, this created a situation where Asterisk would
crash: obtaining a cached snapshot is not NULL tolerant.

This patch restores the previous implementation, which used a NULL safe set
of routines to produce a blob containing the channel snapshot (if available)
and information about the MeetMe conference.

ASTERISK-24234 #close
Reported by: Shaun Ruffell
Tested by: Shaun Ruffell

Merged revisions 421270 from

Merged revisions 421273 from

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

8 years agoapps/app_dial: Fix Dial 'z' option
Matthew Jordan [Sun, 17 Aug 2014 23:10:21 +0000 (23:10 +0000)]
apps/app_dial: Fix Dial 'z' option

The 'z' option is supposed to disable the dial timeout in the case of a call
forward. Unfortunately, the wrong timeout timer was passed to the do_forward
function, resulting in the option not working.

ASTERISK-24225 #close
Reported by: dimitripietro
Tested by: dimitripietro
  jira_asterisk_24225_v1.8.patch uploaded by rmudgett (License 5621)
  jira_asterisk_24225_v11.patch uploaded by rmudgett (License 5621)

Merged revisions 421232 from

Merged revisions 421233 from

Merged revisions 421234 from

Merged revisions 421235 from

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

8 years agoconfigure: Undefine FORTIFY_SOURCE prior to defining it for patched gcc
Matthew Jordan [Sun, 17 Aug 2014 22:35:27 +0000 (22:35 +0000)]
configure: Undefine FORTIFY_SOURCE prior to defining it for patched gcc

Some distributions of Linux patch gcc to define FORTIFY_SOURCE when gcc is
executed with optimization. This "help" unfortunately results in re-definition
warnings when FORTIFY_SOURCE is later defined in Asterisk's build system. This
patch undefines FORTIFY_SOURCE prior to defining it to prevent this warning.


ASTERISK-24032 #close
Reported by: Kilburn
Tested by: Kilburn, wdoekes
  1.8.diff uploaded by cloos (License 5956)
  10.diff uploaded by cloos (License 5956)
  11.diff uploaded by cloos (License 5956)
  12.diff uploaded by cloos (License 5956)
  13.diff uploaded by cloos (License 5956)

Merged revisions 421227 from

Merged revisions 421228 from

Merged revisions 421229 from

Merged revisions 421230 from

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

8 years agores_http_websocket: Include query parameters in client connection requests.
Joshua Colp [Sun, 17 Aug 2014 16:11:27 +0000 (16:11 +0000)]
res_http_websocket: Include query parameters in client connection requests.


Merged revisions 421210 from

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

8 years agoBridging: Fix a behavioral change when checking if a channel is leaving a bridge
Jonathan Rose [Fri, 15 Aug 2014 17:26:12 +0000 (17:26 +0000)]
Bridging: Fix a behavioral change when checking if a channel is leaving a bridge

r420934 introduced some failures in the test suite.  Upon investigating, it was
discovered that differences in the way we were evaluating whether a channel was in
the process of leaving a bridge were causing some reinvites not to occur (mostly
reinvites back to Asterisk when ending a call). This patch fixes that behavioral

ASTERISK-24027 #close
Reported by: Matt Jordan

Merged revisions 421186 from

Merged revisions 421187 from

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

8 years agoapp_voicemail/app: Remove test events that were duplicated by r421059
Matthew Jordan [Fri, 15 Aug 2014 15:50:46 +0000 (15:50 +0000)]
app_voicemail/app: Remove test events that were duplicated by r421059

Moving the test event raised when a file is played back (which occurred in
r421059) broke the ever loving snot out of the voicemail tests. This caused
duplicate test events to get raised, as app_voicemail and main/app were raising
events prior to call ast_streamfile. The voicemail tests did not enjoy getting
multiple events.

Since raising the playback event in ast_streamfile is far more useful to the
vast majority of tests, this patch keeps the call there and simply removes the
extraneous calls that duplicated the event.

Merged revisions 421125 from

Merged revisions 421164 from

Merged revisions 421165 from

Merged revisions 421166 from

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

8 years agores/res_hep_rtcp: Remove dependency on PJSIP
Matthew Jordan [Thu, 14 Aug 2014 21:16:32 +0000 (21:16 +0000)]
res/res_hep_rtcp: Remove dependency on PJSIP

The res_hep_rtcp module was incorrectly including <pjsip.h>. This didn't need
to be included, as the module does not using PJPROJECT any fashion.
Unfortunately, because res_hep_rtcp did not include pjsip in its MODULEINFO as
a dependency, this also meant that res_hep_rtcp will fail to compile on a
system without PJPROJECT.

This patch removes the include.

Thanks to Damien Wedhorn for pointing this out in #asterisk-dev.

ASTERISK-24236 #close
Reported by: Damien Wedhorn, Matt Jordan
Tested by: Damien Wedhorn

Merged revisions 421064 from

Merged revisions 421065 from

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

8 years agomain/file: Move test event to emit PLAYBACK event more consistently
Matthew Jordan [Thu, 14 Aug 2014 20:59:15 +0000 (20:59 +0000)]
main/file: Move test event to emit PLAYBACK event more consistently

This is being done in advance of the test for ASTERISK-23953

Merged revisions 421059 from

Merged revisions 421060 from

Merged revisions 421061 from

Merged revisions 421062 from

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

8 years agocel: Make sure channels in extra fields include their unique IDs as well
Matthew Jordan [Thu, 14 Aug 2014 19:21:51 +0000 (19:21 +0000)]
cel: Make sure channels in extra fields include their unique IDs as well

CEL typically tracks a lot of information using the unique ID of the channel.
This is typically needed due to tying events together using the linked ID of
the various channels involved in a "call", which is derived from the channel ID
of the oldest channel involved in a bridge (or in the case of a Dial, the
parent channel).

Previously, we had updated the extra fields to include the involved channel
names, but forgot to put in the unique ID. This patch corrects that error.

Merged revisions 421037 from

Merged revisions 421042 from

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

8 years agoARI: Originate to app local channel subscription code optimization.
Richard Mudgett [Thu, 14 Aug 2014 16:33:27 +0000 (16:33 +0000)]
ARI: Originate to app local channel subscription code optimization.

Reduce the scope of local_peer and only get it if the ARI originate is
subscribing to the channels.


Merged revisions 421009 from

Merged revisions 421010 from

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

8 years agochannel_internal_api.c: Replace some code with ao2_replace().
Richard Mudgett [Thu, 14 Aug 2014 16:01:39 +0000 (16:01 +0000)]
channel_internal_api.c: Replace some code with ao2_replace().

Use ao2_replace() instead of ao2_cleanup(); ao2_bump().

ao2_replace() has the advantange of not altering the ref count if the
replaced pointer is the same.


Merged revisions 420992 from

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

8 years agores_pjsip_send_to_voicemail.c: Fix svn file properties.
Richard Mudgett [Wed, 13 Aug 2014 17:05:01 +0000 (17:05 +0000)]
res_pjsip_send_to_voicemail.c: Fix svn file properties.

Merged revisions 420956 from

Merged revisions 420957 from

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

8 years agoPJSIP: Prevent crash no-URI contacts
Kinsey Moore [Wed, 13 Aug 2014 16:56:14 +0000 (16:56 +0000)]
PJSIP: Prevent crash no-URI contacts

This prevents a crash from occurring when a contact with no URI is used
for the creation of an outbound out-of-dialog request with no
associated endpoint.

Merged revisions 420949 from

Merged revisions 420950 from

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

8 years agoBridges: Fix feature interruption/unintended kick caused by external actions
Jonathan Rose [Wed, 13 Aug 2014 16:24:37 +0000 (16:24 +0000)]
Bridges: Fix feature interruption/unintended kick caused by external actions

If a manager or CLI user attached a mixmonitor to a call running a dynamic
bridge feature while in a bridge, the feature would be interrupted and the
channel would be forcibly kicked out of the bridge (usually ending the call
during a simple 1 to 1 call). This would also occur during any similar action
that could set the unbridge soft hangup flag, so the fix for this was to
remove unbridge from the soft hangup flags and make it a separate thing all

ASTERISK-24027 #close
Reported by: mjordan

Merged revisions 420934 from

Merged revisions 420940 from

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

8 years agoAMI: Improve documentation for Status action
Kinsey Moore [Wed, 13 Aug 2014 14:31:46 +0000 (14:31 +0000)]
AMI: Improve documentation for Status action

Merged revisions 420919 from

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

8 years agologger: Don't store verbose-magic in the log files.
Walter Doekes [Wed, 13 Aug 2014 07:54:10 +0000 (07:54 +0000)]
logger: Don't store verbose-magic in the log files.

In r399267, the verbose2magic stuff was edited. This time it results
in magic characters in the log files for multiline messages.

In trunk (and 13) this was fixed by the "stripping" of those
characters from multiline messages (in r414798).

This fix is altered to actually strip the characters and not replace
them with blanks.


Merged revisions 420897 from

Merged revisions 420898 from

Merged revisions 420899 from

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

8 years agochan_sip: Fix type mismatch when the format is changed.
Richard Mudgett [Tue, 12 Aug 2014 23:45:17 +0000 (23:45 +0000)]
chan_sip: Fix type mismatch when the format is changed.

Symptom is most likely an invalid ao2 object bad magic number message or a
less likely crash.

Merged revisions 420881 from

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

8 years agores_stasis_snoop.c: Fix off nominial exit path leaving Snoop channel locked and not...
Richard Mudgett [Tue, 12 Aug 2014 23:36:37 +0000 (23:36 +0000)]
res_stasis_snoop.c: Fix off nominial exit path leaving Snoop channel locked and not hungup.

* Made use ast_copy_string() instead of strcpy() for snoop uniqueid for
safety.  There is no guarantee that the max channel uniqueid length will
remain the same as the snoop uniqueid space.

Merged revisions 420879 from

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

8 years agoapp_voicemail: Fix the "test_voicemail_vm_info" unit test.
Joshua Colp [Tue, 12 Aug 2014 11:18:17 +0000 (11:18 +0000)]
app_voicemail: Fix the "test_voicemail_vm_info" unit test.

Merged revisions 420856 from

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

8 years agores/stasis/command.c: Fix recent commit using spaces instead of tabs.
Richard Mudgett [Mon, 11 Aug 2014 21:04:21 +0000 (21:04 +0000)]
res/stasis/command.c: Fix recent commit using spaces instead of tabs.

Merged revisions 420836 from

Merged revisions 420837 from

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

8 years agoAMI/ARI: Update version to 2.5.0/1.5.0 respectively
Matthew Jordan [Mon, 11 Aug 2014 18:51:43 +0000 (18:51 +0000)]
AMI/ARI: Update version to 2.5.0/1.5.0 respectively

This is to support the backwards compatible changes made in the next version
of Asterisk.

Merged revisions 420805 from

Merged revisions 420808 from

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

8 years agoStasis: Use the correct return value
Kinsey Moore [Mon, 11 Aug 2014 18:46:59 +0000 (18:46 +0000)]
Stasis: Use the correct return value

Return the correct value instead of always returning 0 when setting
internal status on unreal channels.

Reported by: Richard Mudgett

Merged revisions 420802 from

Merged revisions 420803 from

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

8 years agoStasis: Allow internal channels directly into bridges
Kinsey Moore [Mon, 11 Aug 2014 18:38:15 +0000 (18:38 +0000)]
Stasis: Allow internal channels directly into bridges

The patch to catch channels being shoehorned into Stasis() via external
mechanisms also happens to catch Announcer and Recorder channels
because they aren't known to be stasis-controlled channels in the usual
sense. This marks those channels as Stasis()-internal channels and
allows them directly into bridges.


Merged revisions 420795 from

Merged revisions 420796 from

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

8 years agoFix crashing unit tests with regards to RLS.
Mark Michelson [Mon, 11 Aug 2014 17:40:07 +0000 (17:40 +0000)]
Fix crashing unit tests with regards to RLS.

The unit tests require a sorcery.conf file that has been
set up to store resource lists in memory rather than retrieving
from configuration.

With a setup that is not conducive to running the tests, a fault
in sorcery currently causes Asterisk to crash when attempting to
run any of the tests.

To get around the crash, this adds a function that verifies the
current environment and marks the tests as "not run" if the setup
is not correct.

Merged revisions 420779 from

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

8 years agoFix crash encountered by the testsuite.
Mark Michelson [Mon, 11 Aug 2014 16:03:41 +0000 (16:03 +0000)]
Fix crash encountered by the testsuite.

Running testsuite tests locally produced no errors, but when
run using the continuous integration framework, crashes occurred.

The crashes occurred due to a refcounting error that had been fixed
for a similar situation.

Merged revisions 420758 from

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

8 years agores_hep: Remove disabling of modules
Matthew Jordan [Mon, 11 Aug 2014 13:57:53 +0000 (13:57 +0000)]
res_hep: Remove disabling of modules

These modules were originally specified as being disabled, as they were
introduced midstream in Asterisk 12. That makes it nicer for folks who are
upgrading to a new release in the middle of Asterisk 12. That's not the case
for Asterisk 13: it's a brand new release. There's no reason to have the
modules disabled by default in that case.

Merged revisions 420742 from

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

8 years agogeneral: Fix memory Corruption in __ast_string_field_ptr_build_va.
Walter Doekes [Mon, 11 Aug 2014 10:41:07 +0000 (10:41 +0000)]
general: Fix memory Corruption in __ast_string_field_ptr_build_va.

If the space left in a stringfield is between 0 and
(alignof(ast_string_field_allocation)-1) adding new data would cause
memory corruption, because we would assume enough space (unsigned

Thanks Arnd Schmitter for reporting and finding out the cause!

ASTERISK-23508 #close
Reported by: Arnd Schmitter
Tested by: Arnd Schmitter, JoshE


Merged revisions 420680 from

Merged revisions 420715 from

Merged revisions 420716 from

Merged revisions 420717 from

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

8 years agotcptls: Avoid compiler warning on non-dev-mode.
Walter Doekes [Mon, 11 Aug 2014 09:55:13 +0000 (09:55 +0000)]
tcptls: Avoid compiler warning on non-dev-mode.

Merged revisions 420654 from

Merged revisions 420655 from

Merged revisions 420656 from

Merged revisions 420657 from

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

8 years agofuncs/func_jitterbuffer: Tweak documentation
Matthew Jordan [Mon, 11 Aug 2014 01:31:56 +0000 (01:31 +0000)]
funcs/func_jitterbuffer: Tweak documentation

This patch merely reformats and cleans up a bit of the jitterbuffer
documentation for the wiki.

Merged revisions 420639 from

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

8 years agoapp_queue: Add RealTime support for queue rules
Matthew Jordan [Mon, 11 Aug 2014 00:14:53 +0000 (00:14 +0000)]
app_queue: Add RealTime support for queue rules

This patch gives the optional ability to keep queue rules in RealTime. It is
important to note that with this patch:
 (a) Queue rules in RealTime are only examined on module load/reload
 (b) Queue rules are loaded both from the queuerules.conf file as well as the
     RealTime backend
To inform app_queue to examine RealTime for queue rules, a new setting has been
added to queuerules.conf's general section "realtime_rules". RealTime queue
rules will only be used when this setting is set to "yes".

The schema for the database table supports a rule_name, time, min_penalty, and
max_penalty columns. min_penalty and max_penalty can be relative, if a '-' or
'+' literal is provided. Otherwise, the penalties are treated as constants.

For example:
rule_name, time, min_penalty, max_penalty
'default', '10', '20', '30'
'test2', '20', '30', '55'
'test2', '25', '-11', '+1111'
'test2', '400', '112', '333'
'test3', '0', '4564', '46546'
'test_rule', '40', '15', '50'

which would result in :

Rule: default
 - After 10 seconds, adjust QUEUE_MAX_PENALTY to 30 and adjust
Rule: test2
 - After 20 seconds, adjust QUEUE_MAX_PENALTY to 55 and adjust
 - After 25 seconds, adjust QUEUE_MAX_PENALTY by 1111 and adjust
 - After 400 seconds, adjust QUEUE_MAX_PENALTY to 333 and adjust
Rule: test3
 - After 0 seconds, adjust QUEUE_MAX_PENALTY to 46546 and adjust
Rule: test_rule
 - After 40 seconds, adjust QUEUE_MAX_PENALTY to 50 and adjust

If you use RealTime, the queue rules will be always reloaded on a module
reload, even if the underlying file did not change. With the option disabled,
the rules will only be reloaded if the file was modified.


ASTERISK-23823 #close
Reported by: Michael K
  app_queue.c_realtime_trunk.patch uploaded by Michael K (License 6621)

Merged revisions 420624 from

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

8 years agoUpdate CHANGES file
Matthew Jordan [Sun, 10 Aug 2014 22:02:03 +0000 (22:02 +0000)]
Update CHANGES file

Merged revisions 420609 from

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

8 years agoUpdate UPGRADE-13.txt file
Matthew Jordan [Sun, 10 Aug 2014 21:35:54 +0000 (21:35 +0000)]
Update UPGRADE-13.txt file

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

8 years agoFix build in devmode.
Jason Parker [Fri, 8 Aug 2014 20:08:53 +0000 (20:08 +0000)]
Fix build in devmode.

Merged revisions 420592 from

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

8 years agoapp_voicemail: Add the ability to specify multiple email addresses.
Jason Parker [Fri, 8 Aug 2014 19:16:29 +0000 (19:16 +0000)]
app_voicemail: Add the ability to specify multiple email addresses.

Reported by: Jacob Barber

Merged revisions 420577 from

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

8 years agochan_sip: Mark chan_sip and its files as extended support
Matthew Jordan [Fri, 8 Aug 2014 17:53:39 +0000 (17:53 +0000)]
chan_sip: Mark chan_sip and its files as extended support

Merged revisions 420562 from

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

8 years agomake_ari_stubs: Update wiki prefix to '13'
Matthew Jordan [Fri, 8 Aug 2014 12:40:16 +0000 (12:40 +0000)]
make_ari_stubs: Update wiki prefix to '13'

Merged revisions 420538 from

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

8 years agores_ari_resource.c.mustache: Update template to emit module support level
Matthew Jordan [Fri, 8 Aug 2014 12:38:18 +0000 (12:38 +0000)]
res_ari_resource.c.mustache: Update template to emit module support level

Merged revisions 420536 from

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

8 years agomain/message: remove debug message
Matthew Jordan [Fri, 8 Aug 2014 12:33:06 +0000 (12:33 +0000)]
main/message: remove debug message

Merged revisions 420533 from

Merged revisions 420534 from

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

8 years agoCEL: Update unit tests for additional information
Kinsey Moore [Fri, 8 Aug 2014 03:07:41 +0000 (03:07 +0000)]
CEL: Update unit tests for additional information

This updates the CEL unit tests for the new information contained in
the attended transfer CEL extra field.

Merged revisions 420513 from

Merged revisions 420514 from

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

8 years agoInitialize svnmerge from branches/13
Matthew Jordan [Fri, 8 Aug 2014 01:37:05 +0000 (01:37 +0000)]
Initialize svnmerge from branches/13

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

8 years agoRemove 12 merge properties
Matthew Jordan [Fri, 8 Aug 2014 01:36:16 +0000 (01:36 +0000)]
Remove 12 merge properties

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

8 years agoUpdate UPGRADE.txt for 13 branch
Matthew Jordan [Fri, 8 Aug 2014 01:33:18 +0000 (01:33 +0000)]
Update UPGRADE.txt for 13 branch

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

8 years agochan_sip: Replace sip_tls_read() and resolve the large SDP poll issue.
Richard Mudgett [Thu, 7 Aug 2014 21:58:38 +0000 (21:58 +0000)]
chan_sip: Replace sip_tls_read() and resolve the large SDP poll issue.

Replace sip_tls_read() and sip_tcp_read() with a single function and
resolve the poll/wait issue with large SDP payloads.

ASTERISK-18345 #close
Reported by: Stephane Chazelas
      tcptls_pollv4.diff (license #5835) patch uploaded by Elazar Broad


Merged revisions 420434 from

Merged revisions 420435 from

Merged revisions 420436 from

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

8 years agoStasis: Correct blind transfer message generation
Kinsey Moore [Thu, 7 Aug 2014 21:17:05 +0000 (21:17 +0000)]
Stasis: Correct blind transfer message generation

This fixes the json object creation format string and key name for the
BridgeBlindTransfer Stasis event allowing it to be published properly.

Merged revisions 420414 from

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

8 years agoStasis: Ensure transfer messages follow validation rules
Kinsey Moore [Thu, 7 Aug 2014 20:24:15 +0000 (20:24 +0000)]
Stasis: Ensure transfer messages follow validation rules

This makes Stasis() event generation for transfer messages follow
validation rules. Currently, ast_json_null() is being used in place of
omitting a key entirely which falls afoul of these validation rules.

Merged revisions 420408 from

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

8 years agoFix build in dev mode
Kinsey Moore [Thu, 7 Aug 2014 20:11:15 +0000 (20:11 +0000)]
Fix build in dev mode

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

8 years agoEnsure bridges exist when trying to determine bridged parties when publishing transfe...
Mark Michelson [Thu, 7 Aug 2014 19:44:32 +0000 (19:44 +0000)]
Ensure bridges exist when trying to determine bridged parties when publishing transfer information.

Merged revisions 420387 from

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

8 years agoAdd support for RFC 4662 resource list subscriptions.
Mark Michelson [Thu, 7 Aug 2014 19:26:32 +0000 (19:26 +0000)]
Add support for RFC 4662 resource list subscriptions.

This commit adds the ability for a user to configure
a resource list in pjsip.conf. Subscribing to this
list simultaneously subscribes the subscriber to all
resources listed. This has the potential to reduce
the amount of SIP traffic when loads of subscribers
on a system attempt to subscribe to each others' states.

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

8 years agochan_iax2: Several media format fixes.
Richard Mudgett [Thu, 7 Aug 2014 18:51:16 +0000 (18:51 +0000)]
chan_iax2: Several media format fixes.

* Fixed the iax.conf bandwidth option.  This is the root cause of

* Added checks in iax2_request() to ensure that there are actual formats
requested for the new channel to prevent any more fracks from issues like
ASTERISK-24150.  This is a consequence of the iax.conf bandwidth option
not working.

* Fixed struct iax2_codec_pref.order member size mismatch issue when
converting to and from the codec preference order list passed over the
wire.  In addition the values sent over the wire are now compatible with
previous Asterisk versions.

* Fixed several issues dealing with the struct iax2_codec_pref members.
Off-by-one, array limit errors, and the order/framing members always need
to be updated together.

* Made iax2_request() setup the channel's native format preference order
according to the user's wishes.  The new media format strategy needs the
order specified earler.

* Fixed usage of ast_format_compatibility_bitfield2format().  The function
can return NULL if the bitfield was not associated with a function.

* Deleted dead code iax2_codec_pref_getsize() and

* Made iax2_parse_allow_disallow() and iax2_codec_pref_string() call
iax2_codec_pref_to_cap() instead of inlining it.

IAX_CAPABILITY_LOWFREE constants again as they were in Asterisk v1.8.

* Renamed prefs to prefs_global so it won't get confused with the local
pref versions.

* Fixed too small buffer in handle_cli_iax2_show_peer().

* Fixed ast_cli() calls in handle_cli_iax2_show_peer() to output complete

* Changed struct create_addr_info.prefs to be struct iax2_codec_pref as an
optimization so iax2_request() and iax2_call() do less work.

* Fixed a potential deadlock in ast_iax2_new() on an off-nominal path when
the pbx could not get started.

* Made set_config() setup a local prefs list along side the local
capability format bitfield.  Once the config is loaded, then the local
copies are put into the global versions.

* Fix unininialized codec_buf in function_iaxpeer().

ASTERISK-24150 #close
Reported by: Scott Griepentrog


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

8 years agoStasis: Convey transfer information to applications
Kinsey Moore [Thu, 7 Aug 2014 15:30:19 +0000 (15:30 +0000)]
Stasis: Convey transfer information to applications

This fixes a class of issues where Stasis applications were not made
aware that their channels were being manipulated or replaced by
external entitiessuch as transfers, AMI commands, or dialplan
applications such as Bridge(). Inconsistent information such as
StasisEnd events with unknown channels as a result of masquerades has
also been corrected. To accomplish these fixes, several new fields
were added to blind and attended transfer messages as well as
StasisStart and BridgeAttendedTransfer Stasis events.

ASTERISK-23941 #close

Merged revisions 420325 from

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

8 years agores_pjsip_publish_asterisk: Add support for exchanging device and mailbox state using...
Joshua Colp [Thu, 7 Aug 2014 14:37:26 +0000 (14:37 +0000)]
res_pjsip_publish_asterisk: Add support for exchanging device and mailbox state using SIP.

This module uses the inbound and outbound PUBLISH support to exchange device and mailbox
state between Asterisk instances. Each instance is configured to publish to the other and
requires no intermediary server. The functionality provided is similar to the XMPP and
Corosync support.


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

8 years agores_pjsip_outbound_publish: Add module which provides outbound PUBLISH support.
Joshua Colp [Thu, 7 Aug 2014 14:35:09 +0000 (14:35 +0000)]
res_pjsip_outbound_publish: Add module which provides outbound PUBLISH support.

This module implements the core parts required for doing outbound PUBLISH.
It takes care of configuration, lifetime management, and authentication.
Additional modules implement the specific events that are published.


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

8 years agopbx: Filter out pattern matching hints in responses sent to ExtensionStateList
Matthew Jordan [Thu, 7 Aug 2014 14:17:54 +0000 (14:17 +0000)]
pbx: Filter out pattern matching hints in responses sent to ExtensionStateList

Hints that are a pattern match are technically stored in the hint container in
the same fashion as concrete implementations of hints. The pattern matching
hints, however, are not "real" in the sense that things can subscribe to them:
rather, they are stored in the hints container so that when a subscription is
made a "real" hint can be generated for the subscription if one does not yet
exist. The extension state core takes care of this correctly by matching
against non-pattern matching extensions prior to pattern matching extensions.

Because of this, however, the ExtensionStateList AMI action was returning
pattern matching hints when executed. These hints are meaningless from the
perspective of AMI clients: their state will never change, they cannot be
subscribed to, and events would never normally be generated from them. As such,
we now filter these out of the response.

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

8 years agobuild_tools: Skip managerEvent combining for AMI action responses
Matthew Jordan [Thu, 7 Aug 2014 03:04:49 +0000 (03:04 +0000)]
build_tools: Skip managerEvent combining for AMI action responses

AMI action responses can (and will) reference AMI events that they return.
These event references and definitions should not be combined with AMI events
raised elsewhere in the code, as they are specifically tied to the AMI action
that raised them.

ASTERISK-24156 #close
Reported by: Rusty Newton

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

8 years agoBlocked revisions 420262
Richard Mudgett [Wed, 6 Aug 2014 21:48:13 +0000 (21:48 +0000)]
Blocked revisions 420262

Change comment.

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

8 years agoFix alembic script to work properly in offline mode.
Richard Mudgett [Wed, 6 Aug 2014 18:12:48 +0000 (18:12 +0000)]
Fix alembic script to work properly in offline mode.

When run in offline mode, this would attempt to check the database for
the presence of a type it was going to try to create. I now check the
context to see if we're running in offline mode and change a parameter

Merged revisions 407567 from

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

8 years agoAdd alembic script that adds contact user_agent and endpoint message_context.
Richard Mudgett [Wed, 6 Aug 2014 17:56:09 +0000 (17:56 +0000)]
Add alembic script that adds contact user_agent and endpoint message_context.

Merged revisions 411514 from

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

8 years agoalembic: Adjust sippeers, queue_members, and voicemail_messages tables.
Richard Mudgett [Wed, 6 Aug 2014 17:04:08 +0000 (17:04 +0000)]
alembic: Adjust sippeers, queue_members, and voicemail_messages tables.

* Increased the sippeers useragent max string size to 255.

* Changed the queue_members uniqueid to an auto incremented integer
instead of a string.

* Increased the voicemail_messages BLOB size to LONGBLOB on mysql.

* Fixed the add_tables_for_pjsip config change version downgrade actions
to drop a table it created.

* Adjusted the sample alembic.ini files cdr.ini.sample, config.ini.sample,
and voicemail.ini.sample to give a mysql and postgres sqlalchemy.url

ASTERISK-23847 #close
Reported by: Stephen More

ASTERISK-23825 #close
Reported by: Stephen More

ASTERISK-23909 #close
Reported by: Stephen More


Merged revisions 420211 from

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

8 years agopbx_lua: fix regression with global sym export and context clash by pbx_config.
George Joseph [Wed, 6 Aug 2014 16:12:26 +0000 (16:12 +0000)]
pbx_lua: fix regression with global sym export and context clash by pbx_config.

ASTERISK-23818 (lua contexts being overwritten by contexts of the same name in
pbx_config) surfaced because pbx_lua, having the AST_MODFLAG_GLOBAL_SYMBOLS
set, was always force loaded before pbx_config.  Since I couldn't find any
reason for pbx_lua to export it's symbols to the rest of Asterisk, I simply
changed the flag to AST_MODFLAG_DEFAULT.  Problem solved.  What I didn't
realize was that the symbols need to be exported not because Asterisk needs
them but because any external Lua modules like luasql.mysql need the base
Lua language APIs exported (ASTERISK-17279).

Back to ASTERISK-23818...  It looks like there's an issue in pbx.c where
context_merge was only merging includes, switches and ignore patterns if
the context was already existing AND has extensions, or if the context was
brand new.  If pbx_lua is loaded before pbx_config, the context will exist
BUT pbx_lua, being implemented as a switch, will never place extensions in
it, just the switch statement.  The result is that when pbx_config loads,
it never merges the switch statement created by pbx_lua into the final

This patch sets pbx_lua's modflag back to AST_MODFLAG_GLOBAL_SYMBOLS and adds
an "else if" in context_merge that catches the case where an existing context
has includes, switchs or ingore patterns but no actual extensions.

ASTERISK-23818 #close
Reported by: Dennis Guse
Reported by: Timo Teräs
Tested by: George Joseph

Merged revisions 420146 from

Merged revisions 420147 from

Merged revisions 420148 from

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

8 years agoAdd documentation to the ability to retrieve the source port of a SIP call.
Walter Doekes [Wed, 6 Aug 2014 15:32:22 +0000 (15:32 +0000)]
Add documentation to the ability to retrieve the source port of a SIP call.

(belongs with r419970)

ASTERISK-24040 #close
func_channel.c.diff uploaded by dtryba


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

8 years agoStasis: Allow message types to be blocked
Kinsey Moore [Wed, 6 Aug 2014 12:55:28 +0000 (12:55 +0000)]
Stasis: Allow message types to be blocked

This introduces stasis.conf and a mechanism to prevent certain message
types from being published. Internally, this works by preventing the
chosen message types from being created which ensures that those
message types can never be published. This patch also adjusts message
publishers such that message payloads are not created if the related
message type is not available.

ASTERISK-23943 #close

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

8 years agostasis: Fix compilation issue with ao2 tagged objects
Matthew Jordan [Tue, 5 Aug 2014 21:48:05 +0000 (21:48 +0000)]
stasis: Fix compilation issue with ao2 tagged objects

Merged revisions 420099 from

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

8 years agoMultiple revisions 420089-420090,420097
Matthew Jordan [Tue, 5 Aug 2014 21:44:09 +0000 (21:44 +0000)]
Multiple revisions 420089-420090,420097

  r420089 | mjordan | 2014-08-05 15:10:52 -0500 (Tue, 05 Aug 2014) | 72 lines

  ARI: Add channel technology agnostic out of call text messaging

  This patch adds the ability to send and receive text messages from various
  technology stacks in Asterisk through ARI. This includes chan_sip (sip),
  res_pjsip_messaging (pjsip), and res_xmpp (xmpp). Messages are sent using the
  endpoints resource, and can be sent directly through that resource, or to a
  particular endpoint.

  For example, the following would send the message "Hello there" to PJSIP
  endpoint alice with a display URI of


  This is equivalent to the following as well:


  Both forms are available for message technologies that allow for arbitrary
  destinations, such as chan_sip.

  Inbound messages can now be received over ARI as well. An ARI application that
  subscribes to endpoints will receive messages from those endpoints:

    "type": "TextMessageReceived",
    "timestamp": "2014-07-12T22:53:13.494-0500",
    "endpoint": {
      "technology": "PJSIP",
      "resource": "alice",
      "state": "online",
      "channel_ids": []
    "message": {
      "from": "\"alice\" <sip:alice@>",
      "to": "pjsip:asterisk@",
      "body": "Watson, come here.",
      "variables": []
    "application": "testsuite"

  The above was made possible due to some rather major changes in the message
  core. This includes (but is not limited to):
  - Users of the message API can now register message handlers. A handler has
    two callbacks: one to determine if the handler has a destination for the
    message, and another to handle it.
  - All dialplan functionality of handling a message was moved into a message
    handler provided by the message API.
  - Messages can now have the technology/endpoint associated with them.
    Various other properties are also now more easily accessible.
  - A number of ao2 containers that weren't really needed were replaced with
    vectors. Iteration over ao2_containers is expensive and pointless when
    the lifetime of things is well defined and the number of things is very

  res_stasis now has a new file that makes up its structure, messaging. The
  messaging functionality implements a message handler, and passes received
  messages that match an interested endpoint over to the app for processing.

  Note that inadvertently while testing this, I reproduced ASTERISK-23969.
  res_pjsip_messaging was incorrectly parsing out the 'to' field, such that
  arbitrary SIP URIs mangled the endpoint lookup. This patch includes the
  fix for that as well.


  ASTERISK-23692 #close
  Reported by: Matt Jordan

  ASTERISK-23969 #close
  Reported by: Andrew Nagy
  r420090 | mjordan | 2014-08-05 15:16:37 -0500 (Tue, 05 Aug 2014) | 2 lines

  Remove automerge properties :-(
  r420097 | mjordan | 2014-08-05 16:36:25 -0500 (Tue, 05 Aug 2014) | 2 lines

  test_message: Fix strict-aliasing compilation issue

Merged revisions 420089-420090,420097 from

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

8 years agoBlocked revisions 420060
Richard Mudgett [Tue, 5 Aug 2014 19:13:58 +0000 (19:13 +0000)]
Blocked revisions 420060

format.c: Add reason comments for the format_list ordering.

Merged revisions 420054 from

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

8 years agochan_iax2: Fix a crash that occurs when using allow=all for an IAX2 peer
Jonathan Rose [Tue, 5 Aug 2014 13:59:53 +0000 (13:59 +0000)]
chan_iax2: Fix a crash that occurs when using allow=all for an IAX2 peer

Or any combination of codecs that includes Opus.

ASTERISK-24107 #close

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

8 years agoRemove duplicate definitions of ast_format_vp8.
Richard Mudgett [Mon, 4 Aug 2014 21:00:51 +0000 (21:00 +0000)]
Remove duplicate definitions of ast_format_vp8.

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

8 years agoAdd the ability to retrieve the source port of a SIP call.
Mark Michelson [Mon, 4 Aug 2014 20:25:16 +0000 (20:25 +0000)]
Add the ability to retrieve the source port of a SIP call.

This adds the ability to call CHANNEL(recvport) on chan_sip
channels to see the port on which an INVITE was received.

ASTERISK-24040 #close
Reported by dtryba
dialplan_functions.patch uploaded by dtryba (License #6628)


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

8 years agoManager - Improve documentation for manager commands Getvar and Setvar.
Rusty Newton [Mon, 4 Aug 2014 19:47:06 +0000 (19:47 +0000)]
Manager - Improve documentation for manager commands Getvar and Setvar.

The documentation for these commands did not make it clear that they could
accept expressions and functions. Modified to make this clear, but tried
not to be overly explicit.

ASTERISK-21178 #close
Reported by: Rusty Newton
Tested by: Rusty Newton


Merged revisions 419942 from

Merged revisions 419943 from

Merged revisions 419944 from

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

8 years agoManager: Add PJSIPShowEndpoint[s] documentation
Kinsey Moore [Sat, 2 Aug 2014 03:37:25 +0000 (03:37 +0000)]
Manager: Add PJSIPShowEndpoint[s] documentation

This adds a large swath of response documentation for PJSIPShowEndpoint
and PJSIPShowEndpoints AMI commands. It relies heavily on the existing
text in the configInfo documentation via xi:include tags to avoid
documentation duplication.


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

8 years agoAdd ContactStatusDetail to PJSIPShowEndpoint AMI output.
Mark Michelson [Fri, 1 Aug 2014 14:48:35 +0000 (14:48 +0000)]
Add ContactStatusDetail to PJSIPShowEndpoint AMI output.

Now when running PJSIPShowEndpoint, you will receive a
ContactStatusDetail for each bound contact that Asterisk
is qualifying. This information includes the URI of the
contact, current reachability, and roundtrip time.

AFS-91 #close
Reported by Mark Michelson


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

8 years agoPJSIP: Send Notify AMI and CLI commands can now send to URI instead of endpoint
Jonathan Rose [Thu, 31 Jul 2014 16:19:50 +0000 (16:19 +0000)]
PJSIP: Send Notify AMI and CLI commands can now send to URI instead of endpoint


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

8 years agores_hep_rtcp: Add module that sends RTCP information to a Homer Server
Matthew Jordan [Thu, 31 Jul 2014 11:57:51 +0000 (11:57 +0000)]
res_hep_rtcp: Add module that sends RTCP information to a Homer Server

This patch adds a new module to Asterisk, res_hep_rtcp. The module subscribes
to the RTCP topics in Stasis and receives RTCP information back from the
message bus. It encodes into HEPv3 packets and sends the information to the
res_hep module for transmission.

Using this, someone with a Homer server can get live call quality monitoring
for all RTP-based channels in their Asterisk 12+ systems.

In addition, there were a few bugs in the RTP engine, res_rtp_asterisk, and
chan_pjsip that were uncovered by the tests written for the Asterisk Test
Suite. This patch fixes the following:
1) chan_pjsip failed to set its channel unique ids on its RTP instance on
   outbound calls. It now does this in the appropriate location, in the
   serialized call callback.
2) The rtp_engine was overflowing some values when packed into JSON.
   Specifically, some longs and unsigned ints can't be be packed into integer
   values, for obvious reasons. Since libjansson only supports integers,
   floats, strings, booleans, and objects, we print these values into strings.
3) res_rtp_asterisk had a few problems:
   (a) it would emit a source IP address of if bound to that IP
       address. We now use ast_find_ourip to get a better IP address, and
       properly marshal the result into an ast_strdupa'd string.
   (b) Reports can be generated with no report bodies. In particular, this
       occurs when a sender is transmitting information to a receiver (who
       will send no RTP back to the sender). As such, the sender has no report
       body for what it received. We now properly handle this case, and the
       sender will emit SR reports with no body. Likewise, if we receive an
       RTCP packet with no report body, we will still generate the appropriate

ASTERISK-24119 #close

Merged revisions 419823 from

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

8 years agoxmldocs: Add support for an <example> tag in the Asterisk XML Documentation
Matthew Jordan [Thu, 31 Jul 2014 11:49:40 +0000 (11:49 +0000)]
xmldocs: Add support for an <example> tag in the Asterisk XML Documentation

This patch adds support for an <example /> tag in the XML documentation schema.

For CLI help, this doesn't change the formatting too much:
 - Preceeding white space is removed
 - Unlike with para elements, new lines are preserved

However, having an <example /> tag in the XML schema allows for the wiki
documentation generation script to surround the documentation with {code} or
{noformat} tags, generating much better content for the wiki - and allowing us
to put dialplan examples (and other code snippets, if desired) into the
documentation for an application/function/AMI command/etc.


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

8 years agomanager: Add state list commands
Kinsey Moore [Wed, 30 Jul 2014 18:32:25 +0000 (18:32 +0000)]
manager: Add state list commands

This patch adds three new AMI commands:
 * ExtensionStateList (pbx.c) - list all known extension state hints
   and their current statuses. Events emitted by the list action are
   equivalent to the ExtensionStatus events.
 * PresenceStateList (res_manager_presencestate) - list all known
   presence state values. Events emitted are generated by the stasis
   message type, and hence are PresenceStateChange events.
 * DeviceStateList (res_manager_devicestate) - list all known device
   state values. Events emitted are generated by the stasis message
   type, and hence are DeviceStateChange events.

Patch-by: Matt Jordan

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

8 years agoDo not omit the first header of a UserEvent AMI action from the corresponding emitted...
Mark Michelson [Tue, 29 Jul 2014 19:41:54 +0000 (19:41 +0000)]
Do not omit the first header of a UserEvent AMI action from the corresponding emitted UserEvent.

ASTERISK-24124 #close
Reported by Matt Jordan

AFS-131 #close
Reported by Matt Jordan

userevent.patch uploaded by Matt Jordan (License #6283)

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

8 years agores_pjsip_session: Fix race condition where redirecting information may not be set.
Joshua Colp [Tue, 29 Jul 2014 10:56:40 +0000 (10:56 +0000)]
res_pjsip_session: Fix race condition where redirecting information may not be set.

Since the PJSIP INVITE session module is invoked before any session supplements it was
possible for it to handle a redirect before the res_pjsip_diversion module interpreted
and set redirecting information on the channel. This would cause the redirecting
information to get lost.

This patch ensures that session supplements are *always* invoked before a redirect occurs
by explicitly calling them in the redirect handler.


Merged revisions 419764 from

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

8 years agores_pjsip_pidf_body_generator / res_pjsip_xpidf_body_generator: Ensure local entity...
Joshua Colp [Tue, 29 Jul 2014 09:54:24 +0000 (09:54 +0000)]
res_pjsip_pidf_body_generator / res_pjsip_xpidf_body_generator: Ensure local entity is unquoted.

The local entity as provided by PJSIP is quoted within '<' and '>'. As a result placing
this value into XML will result in malformed XML being produced. This patch now unquotes
the local entity so it can go safely into the XML.


Merged revisions 419750 from

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

8 years agodatastores: Audit ast_channel_datastore_remove usage.
Richard Mudgett [Mon, 28 Jul 2014 18:58:43 +0000 (18:58 +0000)]
datastores: Audit ast_channel_datastore_remove usage.

Audit of v1.8 usage of ast_channel_datastore_remove() for datastore memory

* Fixed leaks in app_speech_utils and func_frame_trace.

* Fixed app_speech_utils not locking the channel when accessing the
channel datastore list.


Audit of v11 usage of ast_channel_datastore_remove() for datastore memory

* Fixed leak in func_jitterbuffer.  (Was not in v12)


Audit of v12 usage of ast_channel_datastore_remove() for datastore memory

* Fixed leaks in abstract_jb.

* Fixed leak in ast_channel_unsuppress().  Used by ARI mute control and

* Fixed ref leak in ast_channel_suppress().  Used by ARI mute control and


Merged revisions 419684 from

Merged revisions 419685 from

Merged revisions 419686 from

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