8 years agomain/cdr: Copy over location information during a fork
Matthew Jordan [Sat, 6 Sep 2014 22:50:24 +0000 (22:50 +0000)]
main/cdr: Copy over location information during a fork

When a CDR is forked, a new CDR is created and appended to the CDR chain for
the Party A. The forked CDR starts life off as a clone of the last
non-finalized for the particular Party A. In the past, merely copying over
the snapshots for Party A/Party B would be sufficient. However, as the CDRs
now contain cached information from Party A - specifically application/data,
context, and extension - we need to copy that over during a fork as well.

Huzzah for unit tests catching this when the context/extension were derived
from a cached value on the CDR instead of on Party A.

Merged revisions 422769 from

Merged revisions 422770 from

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

8 years agomain/rtp_engine: Format NTP timestamps as unsigned ints
Matthew Jordan [Sat, 6 Sep 2014 22:22:34 +0000 (22:22 +0000)]
main/rtp_engine: Format NTP timestamps as unsigned ints

On some systems, a timeval's tv_sec/tv_usec will be unsigned lont ints, as
opposed to long ints. When the RTP engine formats these as strings, it was
previously formatting them as signed integers, which can result in some
odd negative timestamp values (particularly on 32-bit systems). This patch
formats the values as unsigned long integers.

Merged revisions 422766 from

Merged revisions 422767 from

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

8 years agores_pjsip_sdp_rtp: Fix retrieval of "ice-pwd" attribute if in session and not media...
Joshua Colp [Sat, 6 Sep 2014 19:13:10 +0000 (19:13 +0000)]
res_pjsip_sdp_rtp: Fix retrieval of "ice-pwd" attribute if in session and not media stream.

Merged revisions 422746 from

Merged revisions 422747 from

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

8 years agomain/cdrs: Preserve context/extension when executing a Macro or GoSub
Matthew Jordan [Fri, 5 Sep 2014 22:04:33 +0000 (22:04 +0000)]
main/cdrs: Preserve context/extension when executing a Macro or GoSub

The context/extension in a CDR is generally considered the destination of a
call. When looking at a 2-party call CDR, users will typically be presented
with the following:

context    exten      channel     dest_channel app  data
default    1000       SIP/8675309 SIP/1000     Dial SIP/1000,,20

However, if the Dial actually takes place in a Macro, the current behaviour
in 12 will result in the following CDR:

context    exten      channel     dest_channel app  data
macro-dial s          SIP/8675309 SIP/1000     Dial SIP/1000,,20

The same is true of a GoSub:

context    exten      channel     dest_channel app  data
subs       dial_stuff SIP/8675309 SIP/1000     Dial SIP/1000,,20

This generally makes the context/exten fields less than useful.

It isn't hard to preserve these values in the CDR state machine; however, we
need to have something that informs us when a channel is executing a
subroutine. Prior to this patch, there isn't anything that does this.

This patch solves this problem by adding a new channel flag,
AST_FLAG_SUBROUTINE_EXEC. This flag is set on a channel when it executes a
Macro or a GoSub. The CDR engine looks for this value when updating a Party A
snapshot; if the flag is present, we don't override the context/exten on the
main CDR object. In a funny quirk, executing a hangup handler must *not* abide
by this logic, as the endbeforehexten logic assumes that the user wants to see
data that occurs in hangup logic, which includes those subroutines. Since
those execute outside of a typical Dial operation (and will typically have
their own dedicated CDR anyway), this is unlikely to cause any heartburn.


ASTERISK-24254 #close
Reported by: tm1000, Tony Lewis
Tested by: Tony Lewis

Merged revisions 422718 from

Merged revisions 422719 from

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

8 years agomain/cdr: Fix crash/memory consumption in CDRs in multi-party bridge scenarios
Matthew Jordan [Fri, 5 Sep 2014 21:56:52 +0000 (21:56 +0000)]
main/cdr: Fix crash/memory consumption in CDRs in multi-party bridge scenarios

This patch fixes an issue where CDRs would get stuck generating an infinite
number of CDRs, eventually crashing Asterisk (and consuming a lot of memory
along the way).

When a channel enters into a multi-party bridge, the CDR engine creates
mappings of each participant to each other participant, picking the 'A' party
as it goes. So, if we have four channels in a multi-party bridge (Alice, Bob,
Charlie, Denise), we would have something like:

Alice => Bob
Alice => Charlie
Alice => Denise
Bob => Charlie
Bob => Denise
Charlie => Denise

This works fine when participants enter the bridge a single time.

When a participant leaves a bridge, the CDRs for that channel are transitioned
to a finalized state.

The bug occurs if Bob rejoins. When the CDR engine creates mappings between the
channels, it walks through all the participants currently in the bridge, and
realizes that no one in the bridge can create a CDR with the channel (Bob).
As such it creates a new CDR for the candidate and appends it to that
candidate's chain. Unfortunately, on this particular code path, it doesn't
stop traversing the candidate's chain. Since we just added ourselves to the
chain, this causes the loop to keep going, constantly adding new CDRs.

This patch makes it so the engine bails when it creates a CDR match in this


ASTERISK-24241 #close
Reported by: Deepak Singh Rawat
Tested by: Deepak Singh Rawat

Reported by: Frankie Chin

Merged revisions 422715 from

Merged revisions 422716 from

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

8 years agofunc_channel.c: Add missing locking to some CHANNEL() requests.
Richard Mudgett [Fri, 5 Sep 2014 20:38:27 +0000 (20:38 +0000)]
func_channel.c: Add missing locking to some CHANNEL() requests.

* The CHANNEL() audionativeformat, videonativeformat, audioreadformat, and
audiowriteformat now need locking since the media format rework when
accessing the channel's format pointers.

* Increased the buffer size for CHANNEL() audionativeformat and
videonativeformat output strings since the allow=all can be a lengthy

* Tweaked the CHANNEL() XML documentation for secure_bridge_signaling,
secure_bridge_media, and state.

* Ensured the output buffer is initialized for secure_bridge_signaling and

* Made use the locked_copy_string() macro instead of inlining it for trace
and checkhangup.

Merged revisions 422700 from

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

8 years agoDial API: Add a dial option to indicate the dialed channel will replace dialer
Jonathan Rose [Fri, 5 Sep 2014 20:22:12 +0000 (20:22 +0000)]
Dial API: Add a dial option to indicate the dialed channel will replace dialer

Adds an option to the dial API that marks an outgoing dial as replacing the dialing channel for the purpose of propagating accountcode. When it is used, AST_CHANNEL_REQUESTOR_REPLACEMENT is used instead of AST_CHANNEL_REQUESTOR_BRIDGE_PEER when setting accountcodes on the involved channels with ast_channel_req_accountcodes.


Merged revisions 422684 from

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

8 years agoCall IDs: Fix appearance of call ID in core show channels when NULL
Jonathan Rose [Fri, 5 Sep 2014 19:39:04 +0000 (19:39 +0000)]
Call IDs: Fix appearance of call ID in core show channels when NULL

NULL call IDs were meant to appear as '(none)' but instead were showing
the contents of an uninitialized character buffer.


Merged revisions 422664 from

Merged revisions 422665 from

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

8 years agodevicestate.c: Minor tweaks
Richard Mudgett [Fri, 5 Sep 2014 17:45:03 +0000 (17:45 +0000)]
devicestate.c: Minor tweaks

* In ast_state_chan2dev() use ARRAY_LEN() instead of a sentinel value in

* Fix some comments in chan_iax2.c.

Merged revisions 422661 from

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

8 years agoMenuselect: Fix incorrect enabling on failed deps
Kinsey Moore [Fri, 5 Sep 2014 13:29:38 +0000 (13:29 +0000)]
Menuselect: Fix incorrect enabling on failed deps

This corrects a situation where menuselect can incorrectly enable a
module by default that has defaultenabled set to "no" and has
failed/non-selected dependencies. The bug is due to an inverted test
when checking for whether the given module should be set to enabled by
default on load.

Reported by: John Bigelow

Merged revisions 422646 from

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

8 years agoManager: Require read permission for SYSTEM in order to send FullyBooted
Jonathan Rose [Thu, 4 Sep 2014 22:05:41 +0000 (22:05 +0000)]
Manager: Require read permission for SYSTEM in order to send FullyBooted


Merged revisions 422584 from

Merged revisions 422625 from

Merged revisions 422626 from

Merged revisions 422631 from

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

8 years agores_pjsip_transport_websocket: Fix crash when the Contact header is not a URI.
Joshua Colp [Wed, 3 Sep 2014 14:05:58 +0000 (14:05 +0000)]
res_pjsip_transport_websocket: Fix crash when the Contact header is not a URI.

The code for changing the Contact header wrongly assumed that the Contact
would always contain a URI. This is incorrect.

Reported by: Dafi Ni

Merged revisions 422557 from

Merged revisions 422558 from

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

8 years agoResolve race condition where channels enter dialplan application before media has...
Mark Michelson [Tue, 2 Sep 2014 20:29:58 +0000 (20:29 +0000)]
Resolve race condition where channels enter dialplan application before media has been negotiated.

Testsuite tests will occasionally fail because on reception of a 200 OK SIP response,
an AST_CONTROL_ANSWER frame is queued prior to when media has finished being
negotiated. This is because session supplements are called into before PJSIP's
inv_session code has told us that media has been updated. Sometimes the queued answer
frame is handled by the PBX thread before the ensuing media negotiations occur, causing
a test failure.

As it turns out, there is another place that session supplements could be called into, which is
after media has finished getting negotiated. What this commit introduces is a means for session
supplements to indicate when they wish to be called into when handling an incoming SIP response.
By default, all session supplements will be run at the same point that they were prior to this
commit. However, session supplements may indicate that they wish to be handled earlier than
normal on redirects, or they may indicate they wish to be handled after media has been negotiated.

In this changeset, two session supplements have been updated to indicate a preference for when
they should be run: res_pjsip_diversion executes before handling redirection in order to get
information from the Diversion header, and chan_pjsip now handles responses to INVITEs after
media negotiation to fix the race condition mentioned previously.

ASTERISK-24212 #close
Reported by Matt Jordan


Merged revisions 422536 from

Merged revisions 422542 from

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

8 years agomain/cli: Do not attempt to show CDR data for internal channels
Matthew Jordan [Mon, 1 Sep 2014 15:25:26 +0000 (15:25 +0000)]
main/cli: Do not attempt to show CDR data for internal channels

Internal channels don't have CDRs. Querying the CDR engine for their variables
will make it cranky.

Merged revisions 422506 from

Merged revisions 422507 from

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

8 years agores_stasis: Don't play MoH to channels by default when added to holding bridges
Matthew Jordan [Mon, 1 Sep 2014 14:15:32 +0000 (14:15 +0000)]
res_stasis: Don't play MoH to channels by default when added to holding bridges

When ARI manipulates a bridge, it generally doesn't care what the mixing
technology is. Operations on a bridge initiated through ARI should perform
their action in generally the same way, regardless of the bridge's mixing
technology. While the mixing technology may determine how media flows to
channels, the actual operations on a bridge themselves should be the same.

Currently, this isn't the case with holding bridges. When a channel joins
without a role, MoH is started on that channel automatically. Subsequent bridge
operations that would stop MoH would fail (as there is no Announcer channel
playing MoH to the bridge). Starting MoH on the bridge will also create two
MoH streams: one from the MoH being played on the participant channel, and one
from the announcer channel. From the perspective of ARI users, this is
counter-intuitive - I would not expect MoH to be started for me. The mixing
technology determines how media is shared between participants, not the
application experience.

This patch does the following:
 * The Stasis bridge class now inspects channels as they are going into a
   bridge. If the bridge has a holding capability, and the channel has no
   roles, we give it a participant role and mark the default behaviour to have
   no entertainment. This allows addChannel operations to continue to set a
   participant role with an entertainment option if it felt like it (or could
   do it).
 * The music on hold channel is now Stasis approved (tm)


ASTERISK-24264 #close
Reported by: Samuel Galarneau
Tested by: Samuel Galarneau

Merged revisions 422503 from

Merged revisions 422504 from

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

8 years agoconfbridge: Add Duration to ConfbridgeList event
George Joseph [Sat, 30 Aug 2014 17:33:08 +0000 (17:33 +0000)]
confbridge: Add Duration to ConfbridgeList event

The ConfbridgeList event doesn't include how long the user has been a
member of the conference.  This patch adds Duration (seconds) which
is based on user->chan->answertime.

Tested by: George Joseph

Merged revisions 422444 from

Merged revisions 422445 from

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

8 years agomanager: Make WaitEvent action respect eventfilters
George Joseph [Sat, 30 Aug 2014 17:24:57 +0000 (17:24 +0000)]
manager: Make WaitEvent action respect eventfilters

A WaitEvent issued via an http session isn't respecting eventfilters defined
for the user. I just added a match_filter to the predicate that controls

Tested by: George Joseph

Merged revisions 422439 from

Merged revisions 422440 from

Merged revisions 422441 from

Merged revisions 422442 from

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

8 years agodoc: Add a manpage for the smsq utility
Matthew Jordan [Fri, 29 Aug 2014 19:40:34 +0000 (19:40 +0000)]
doc: Add a manpage for the smsq utility

This patch adds a manpage for the smsq utility. Note that this is one of
the patches the Debian distro applies for the Asterisk project, as per


ASTERISK-24171 #close
Reported by: Jeremy Laine
  smsq.8 uploaded by Jeremy Laine (License 6561)

Merged revisions 422376 from

Merged revisions 422377 from

Merged revisions 422378 from

Merged revisions 422379 from

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

8 years agodoc: Add a manpage for the aelparse utility
Matthew Jordan [Fri, 29 Aug 2014 19:35:43 +0000 (19:35 +0000)]
doc: Add a manpage for the aelparse utility

This patch adds a manpage for the aelparse utility. Note that this is one of
the patches the Debian distro applies for the Asterisk project, as per


ASTERISK-24171 #close
Reported by: Jeremy Laine
  aelparse.8 uploaded by Jeremy Laine (License 6561)

Merged revisions 422371 from

Merged revisions 422372 from

Merged revisions 422373 from

Merged revisions 422374 from

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

8 years agoThe assertion that peer was not found on final event
Scott Griepentrog [Fri, 29 Aug 2014 18:46:19 +0000 (18:46 +0000)]
The assertion that peer was not found on final event
message was being triggered on configuration reload.
This patch changes that case to just return instead.


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

8 years agoLICENSE: Clarify language in Asterisk's LICENSE to allow for linking to UniMRCP
Matthew Jordan [Thu, 28 Aug 2014 21:54:44 +0000 (21:54 +0000)]
LICENSE: Clarify language in Asterisk's LICENSE to allow for linking to UniMRCP

The UniMRCP project distributes Asterisk modules that integrate Asterisk with
UniMRCP, and other Asterisk users use the UniMRCP library as well.
Unfortunately, the UniMRCP license is Apache 2.0, which per the Free Software
Foundation, is not a compatible license with the GPLv2.

"Please note that this license is not compatible with GPL version 2, because it
has some requirements that are not in that GPL version. These include certain
patent termination and indemnification provisions. The patent termination
provision is a good thing, which is why we recommend the Apache 2.0 license for
substantial programs over other lax permissive licenses."

On the other hand, UniMRCP is a great project and we'd like to let people use
it with Asterisk.

This patch updates the LICENSE text to allow users to link Asterisk with
UniMRCP and distribute the resulting binaries.

Merged revisions 422293 from

Merged revisions 422294 from

Merged revisions 422295 from

Merged revisions 422296 from

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

8 years agochan_iax2: Fix Dynamic IAX2 Registrations After Temporary DNS Failure
Michael L. Young [Thu, 28 Aug 2014 20:31:48 +0000 (20:31 +0000)]
chan_iax2: Fix Dynamic IAX2 Registrations After Temporary DNS Failure

The reporter on the issue found some issues when upgrading from version 10 to 11
on 55 hosts.

Two situations that can occur with dynamic registrations.

1.  With dnsmgr disabled, if the host is not resolvable we are not trying to
    resolve the host again when it is time to attempt to register again.  This
    results in never registering to the host.
2.  With dnsmgr enabled, when the host is temporarily not resolvable the
    address is set to and then when the host is resolvable the port
    is not being restored and stays set to 0.

This patch resolves these two issues by:

* Storing the hostname so that it can be used for resolving with DNS.
* Resolve the hostname on the next scheduled attempt to register.
* Storing the port used to reach the host so that when the hostname is
  resolvable again, we can set the port again if the port is still unset after
  looking up the host.

ASTERISK-23767 #close
Reported by: David Herselman
Tested by: David Herselman, Michael L. Young
                                     uploaded by Michael L. Young (license 5026)


Merged revisions 422274 from

Merged revisions 422275 from

Merged revisions 422276 from

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

8 years agoAdded ConfBridge AMI event note to UPGRADE.txt.
Richard Mudgett [Thu, 28 Aug 2014 17:29:16 +0000 (17:29 +0000)]
Added ConfBridge AMI event note to UPGRADE.txt.

Merged revisions 422255 from

Merged revisions 422256 from

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

8 years agochan_sip.c: Add 'rtpbindaddr' setting
Paul Belanger [Thu, 28 Aug 2014 16:06:55 +0000 (16:06 +0000)]
chan_sip.c: Add 'rtpbindaddr' setting

Users now have the ability to bind the rtpengine instance to a specific IP
address.  For example, you want chan_sip (call control) on eth0 but rtp (media)
on eth1.

ASTERISK-24280 #close
Reported by: Paul Belanger
Tested by: Paul Belanger
    rtpengine.diff uploaded by Paul Belanger

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

8 years agoFix bug that did not allow for multiple batched RLS notifications to be sent.
Mark Michelson [Thu, 28 Aug 2014 15:50:41 +0000 (15:50 +0000)]
Fix bug that did not allow for multiple batched RLS notifications to be sent.

A misunderstanding of how the scheduler worked caused further batched notifications
beyond the first not to get scheduled. Now we reset our scheduler ID to -1 after
the batched notification is sent. This way, further notifications can be scheduled
when they arise.

Merged revisions 422239 from

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

8 years agores/res_pjsip/pjsip_options.c: Eliminate excessive RAII_VAR usage.
Richard Mudgett [Thu, 28 Aug 2014 00:44:59 +0000 (00:44 +0000)]
res/res_pjsip/pjsip_options.c: Eliminate excessive RAII_VAR usage.

* Fix off nominal ref leak in find_or_create_contact_status().

* Add missing NULL check of status in update_contact_status() and

Merged revisions 422214 from

Merged revisions 422215 from

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

8 years agosched: Fix typo and whitespace change.
Richard Mudgett [Thu, 28 Aug 2014 00:16:01 +0000 (00:16 +0000)]
sched: Fix typo and whitespace change.

Merged revisions 422200 from

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

8 years agoconfbridge: Add 'Admin' param to join, leave, mute, unmute and talking events
George Joseph [Wed, 27 Aug 2014 17:30:51 +0000 (17:30 +0000)]
confbridge: Add 'Admin' param to join, leave, mute, unmute and talking events

Currently there's no way to tell if a user is an admin or not when receiving
the join, leave, mute, unmute and talking events.  This patch adds that

Tested by: George Joseph

Merged revisions 422176 from

Merged revisions 422177 from

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

8 years agoCallerID: Fix parsing of malformed callerid
Kinsey Moore [Wed, 27 Aug 2014 15:39:35 +0000 (15:39 +0000)]
CallerID: Fix parsing of malformed callerid

This allows the callerid parsing function to handle malformed input
strings and strings containing escaped and unescaped double quotes.
This also adds a unittest to cover many of the cases where the parsing
algorithm previously failed.


Merged revisions 422112 from

Merged revisions 422113 from

Merged revisions 422114 from

Merged revisions 422154 from

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

8 years agoconfbridge: Make kick, mute and unmute handle channel targets consistently.
George Joseph [Tue, 26 Aug 2014 23:30:00 +0000 (23:30 +0000)]
confbridge: Make kick, mute and unmute handle channel targets consistently.

Kick, mute and unmute were a little inconsistent in their handling of channel
targets.  This patch cleans that up by insuring they all handle the 'all'
target consistently and adds the 'participants' target which acts on
non-admins.  Documentation for kick was also cleaned up as it never
supported partial channel names.

Tested by: George Joseph

Merged revisions 422090 from

Merged revisions 422091 from

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

8 years agoFix race condition in the scheduler when deleting a running entry.
Mark Michelson [Tue, 26 Aug 2014 22:14:46 +0000 (22:14 +0000)]
Fix race condition in the scheduler when deleting a running entry.

When scheduled tasks run, they are removed from the heap (or hashtab).
When a scheduled task is deleted, if the task can't be found in the
heap (or hashtab), an assertion is triggered. If DO_CRASH is enabled,
this assertion causes a crash.

The problem is, sometimes it just so happens that someone attempts
to delete a scheduled task at the time that it is running, leading
to a crash. This change corrects the issue by tracking which task
is currently running. If that task is attempted to be deleted,
then we mark the task, and then wait for the task to complete.
This way, we can be sure to coordinate task deletion and memory

Reported by Matt Jordan


Merged revisions 422070 from

Merged revisions 422071 from

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

8 years agores_musiconhold.c: Release any format refs before memset().
Richard Mudgett [Mon, 25 Aug 2014 16:45:40 +0000 (16:45 +0000)]
res_musiconhold.c: Release any format refs before memset().

* Clear the channel music_state pointer before destroying the music_state
object for safety.

Merged revisions 422037 from

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

8 years agores_musiconhold: Fix MOH restarting where it left off from the last hold.
Richard Mudgett [Mon, 25 Aug 2014 16:16:52 +0000 (16:16 +0000)]
res_musiconhold: Fix MOH restarting where it left off from the last hold.

Restore code removed by that
introduced a regression that prevents MOH from restarting were it left off
the last time.

ASTERISK-24019 #close
Reported by: Jason Richards
      jira_asterisk_24019_v1.8.patch (license #5621) patch uploaded by rmudgett


Merged revisions 421976 from

Merged revisions 421977 from

Merged revisions 421978 from

Merged revisions 421979 from

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

8 years agores_pjsip_transport_websocket: Attach the Websocket module on outgoing INVITEs.
Joshua Colp [Sun, 24 Aug 2014 19:37:00 +0000 (19:37 +0000)]
res_pjsip_transport_websocket: Attach the Websocket module on outgoing INVITEs.

In order to alter the Contact header on in-dialog requests and responses the
Websocket module must be attached on outgoing INVITEs. The Contact header is
modified so that the PJSIP transport layer can find and use the existing
Websocket connection based on the source IP address, port, and transport.

ASTERISK-24143 #close
Reported by: Aleksei Kulakov

Merged revisions 421955 from

Merged revisions 421956 from

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

8 years agores_pjsip_transport_websocket: Fix a progressive memory growth.
Joshua Colp [Sun, 24 Aug 2014 19:21:33 +0000 (19:21 +0000)]
res_pjsip_transport_websocket: Fix a progressive memory growth.

The packet structure used to receive messages was using the transport
pool. This meant that for each parsing the pool would grow accordingly.
Since memory can not be reclaimed without resetting it this would
cause the memory pool to grow and grow.

This change uses a specific memory pool for the packet structure and
resets it to a fresh state after the message has been received and

Merged revisions 421939 from

Merged revisions 421945 from

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

8 years agores_pjsip_transport_websocket: Ensure secure Websocket clients can be called.
Joshua Colp [Sun, 24 Aug 2014 18:54:00 +0000 (18:54 +0000)]
res_pjsip_transport_websocket: Ensure secure Websocket clients can be called.

This change enforces the transport in the Contact header for Websocket clients.
Previously a client may provide a transport of 'ws' when it is actually using
a transport of 'wss'. This would cause outgoing calls to fail as the existing
connection could not be found.

Merged revisions 421931 from

Merged revisions 421932 from

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

8 years agochan_sip: Use the server reflexive ICE candidate RTCP port as provided.
Joshua Colp [Sun, 24 Aug 2014 17:22:48 +0000 (17:22 +0000)]
chan_sip: Use the server reflexive ICE candidate RTCP port as provided.

This code originally worked around an issue within res_rtp_asterisk itself.
The wrong socket was being used for the STUN check for RTCP, causing the
port to be the same as RTP. This was subsequently fixed and the RTCP port
provided for the ICE candidate is correct and does not need to be incremented.

ASTERISK-23997 #close
Reported by: Badalian Vyacheslav
 plus1.diff submitted by Badalian Vyacheslav (license 5249)

Merged revisions 421909 from

Merged revisions 421910 from

Merged revisions 421911 from

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

8 years agoFix a locking inversion in MixMonitor.
Mark Michelson [Fri, 22 Aug 2014 16:56:57 +0000 (16:56 +0000)]
Fix a locking inversion in MixMonitor.

We need to unlock the audiohook before trying to lock
the channel, since the correct locking order is channel
then audiohook.

Merged revisions 421882 from

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

8 years agoARI: Fix a crash caused by hanging during playback to a channel in a bridge
Jonathan Rose [Fri, 22 Aug 2014 16:52:51 +0000 (16:52 +0000)]
ARI: Fix a crash caused by hanging during playback to a channel in a bridge

ASTERISK-24147 #close
Reported by: Edvin Vidmar

Merged revisions 421879 from

Merged revisions 421880 from

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

8 years agomain/message: Add a new-line to a DEBUG message
Matthew Jordan [Fri, 22 Aug 2014 14:09:07 +0000 (14:09 +0000)]
main/message: Add a new-line to a DEBUG message

Merged revisions 421859 from

Merged revisions 421860 from

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

8 years agores_musiconhold.c: Remove obsolete REF_DEBUG code.
Richard Mudgett [Thu, 21 Aug 2014 22:09:24 +0000 (22:09 +0000)]
res_musiconhold.c: Remove obsolete REF_DEBUG code.

Remove unneeded code that writes to the wrong file location in an obsolete

Merged revisions 421799 from

Merged revisions 421800 from

Merged revisions 421801 from

Merged revisions 421802 from

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

8 years agoSwitch from hostname to an IP address in the SDP origin line.
Mark Michelson [Thu, 21 Aug 2014 21:43:45 +0000 (21:43 +0000)]
Switch from hostname to an IP address in the SDP origin line.

Using the hostname in the SDP origin line may not satisfy the requirement
of RFC 4566 that we use a FQDN or IP address. This change has us use the
same information from the SDP connection line if possible. If not possible,
we'll use the configured media address. And if that's not possible, we use
the result of a PJLIB call to get the IP address of ourself.

ASTERISK-23994 #close
Reported by Private Name


Merged revisions 421796 from

Merged revisions 421797 from

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

8 years agoEnsure after-bridge behavior is correct when moving from Stasis to a non-Stasis bridge.
Mark Michelson [Thu, 21 Aug 2014 21:37:03 +0000 (21:37 +0000)]
Ensure after-bridge behavior is correct when moving from Stasis to a non-Stasis bridge.

Because of the departable state of channels that enter Stasis bridges, Stasis has to
take responsibility for directing the channel to its intended after-bridge destination
if the channel moves from a Stasis bridge to a non-Stasis bridge. This change ensures
that when such a move occurs, when the channel leaves the bridging system, any after
bridge gotos are honored.


Merged revisions 421792 from

Merged revisions 421794 from

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

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