9 years agoReturn the number of rows affected by a SQL insert, rather than an object ID.
Mark Michelson [Fri, 2 May 2014 20:07:08 +0000 (20:07 +0000)]
Return the number of rows affected by a SQL insert, rather than an object ID.

The realtime API specifies that the store callback is supposed to return the number
of rows affected. res_config_pgsql was instead returning an Oid cast as an int, which
during any nominal execution would be cast to 0. Returning 0 when more than 0 rows were
inserted causes problems to the function's callers.

To give an idea of how strange code can be, this is the necessary code change to fix
a device state issue reported against chan_pjsip in Asterisk 12+. The issue was that
the registrar would attempt to insert contacts into the database. Because of the 0
return from res_config_pgsql, the registrar would think that the contact was not successfully
inserted, even though it actually was. As such, even though the contact was query-able
and it was possible to call the endpoint, Asterisk would "think" the endpoint was unregistered,
meaning it would report the device state as UNAVAILABLE instead of NOT_INUSE.

The necessary fix applies to all versions of Asterisk, so even though the bug reported
only applies to Asterisk 12+, the code correction is being inserted into 1.8+.

Closes issue ASTERISK-23707
Reported by Mark Michelson

Merged revisions 413224 from

Merged revisions 413225 from

Merged revisions 413226 from

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

9 years agores_pjsip_refer: Add Referred-By header on INVITE for blind transfers.
Richard Mudgett [Fri, 2 May 2014 16:39:58 +0000 (16:39 +0000)]
res_pjsip_refer: Add Referred-By header on INVITE for blind transfers.

Per rfc3892, the Referred-By header in a REFER must be copied into the
referenced request (IE.  The outgoing INVITE to the transfer target).

* Automatically put the Referred-By header in the outgoing INVITE message
if the SIPREFERREDBYHDR channel variable is defined with a value.

* Made chan_sip.c:get_refer_info() set SIPREFERREDBYHDR for inheritance so
chan_pjsip has a better chance to interoperate.

* Fixed refer_blind_callback() and refer_incoming_refer_request() to not
modify the data in the pointer returned by pjsip_msg_find_hdr_by_name().
It seems wrong to modify that data since the calling routine doesn't own
the buffer.

ASTERISK-23501 #close
Reported by: John Bigelow


Merged revisions 413210 from

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

9 years agoParking: Add 'AnnounceChannel' argument to manager action 'Park'
Jonathan Rose [Fri, 2 May 2014 16:06:40 +0000 (16:06 +0000)]
Parking: Add 'AnnounceChannel' argument to manager action 'Park'

(closes ASTERISK-23397)
Reported by: Denis

Merged revisions 413196 from

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

9 years agoMake behavior of the PRESENCE_STATE 'e' option more consistent.
Mark Michelson [Thu, 1 May 2014 16:21:09 +0000 (16:21 +0000)]
Make behavior of the PRESENCE_STATE 'e' option more consistent.

When writing presence state, if 'e' is specified, then the presence state will
be stored in the astdb encoded. However, consumers of presence state events or those
that query for the presence state will be given decoded information. If base64 encoding
is desired for consumers, then the information can be base64-encoded manually and the
'e' option can be omitted.

closes issue ASTERISK-23671
Reported by Mark Michelson


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

9 years agoRemove unnecessary repetition checks from res_pjsip_exten_state
Mark Michelson [Thu, 1 May 2014 15:47:49 +0000 (15:47 +0000)]
Remove unnecessary repetition checks from res_pjsip_exten_state

The PBX core already takes care of ensuring that repeated state changes
are not communicated to exten state consumers. Because the check in res_pjsip_exten_state
was incomplete, it was causing valid presence state changes not to be sent out. For instance,
if the presence state did not change but the message or subtype did, then no presence-related
NOTIFY request would be sent out.

closes issue ASTERISK-23672
Reported by Mark Michelson

Merged revisions 413173 from

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

9 years agores_pjsip: Add the ability to configure ciphers based on name.
Joshua Colp [Thu, 1 May 2014 12:31:20 +0000 (12:31 +0000)]
res_pjsip: Add the ability to configure ciphers based on name.

Previously this code would only accept the OpenSSL identifier instead
of the documented name.

ASTERISK-23498 #close
ASTERISK-23498 #comment Reported by: Anthony Messina


Merged revisions 413159 from

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

9 years agochan_sip.c: Fixed off-nominal message iterator ref count and alloc fail issues.
Richard Mudgett [Wed, 30 Apr 2014 21:03:29 +0000 (21:03 +0000)]
chan_sip.c: Fixed off-nominal message iterator ref count and alloc fail issues.

* Fixed early exit in sip_msg_send() not destroying the message iterator.

* Made ast_msg_var_iterator_next() and ast_msg_var_iterator_destroy()
tolerant of a NULL iter parameter in case ast_msg_var_iterator_init()

* Made ast_msg_var_iterator_destroy() clean up any current message data

* Made struct ast_msg_var_iterator, ast_msg_var_iterator_init(),
ast_msg_var_iterator_next(), ast_msg_var_unref_current(), and
ast_msg_var_iterator_destroy() use iter instead of i.

* Eliminated RAII_VAR usage in res_pjsip_messaging.c:vars_to_headers().

Merged revisions 413139 from

Merged revisions 413142 from

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

9 years agochan_pjsip: Fix deadlock when retrieving call-id of channel.
Joshua Colp [Wed, 30 Apr 2014 20:39:17 +0000 (20:39 +0000)]
chan_pjsip: Fix deadlock when retrieving call-id of channel.

If a task was in-flight which required the channel or bridge lock
it was possible for the synchronous task retrieving the call-id
to deadlock as it holds those locks.

After discussing with Mark Michelson the synchronous task was
removed and the call-id accessed directly. This should be safe as
each object involved is guaranteed to exist and the call-id will
never change.

Merged revisions 413140 from

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

9 years agoWebsocket: Add session locking and delay close
Kinsey Moore [Wed, 30 Apr 2014 13:08:07 +0000 (13:08 +0000)]
Websocket: Add session locking and delay close

This resolves a race condition where data could be written to a NULL
FILE pointer causing a crash as a websocket connection was in the
process of shutting down by adding locking to websocket session writes
and by deferring session teardown until session destruction.

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

Merged revisions 413123 from

Merged revisions 413124 from

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

9 years agores_stasis: Add progress indications to operations which perform media.
Joshua Colp [Wed, 30 Apr 2014 12:42:42 +0000 (12:42 +0000)]
res_stasis: Add progress indications to operations which perform media.

This change fixes operations which did not account for the fact that they may
be executed on channels which have not been answered. These operations will
now indicate progress when invoked.

ASTERISK-23560 #close
ASTERISk-23560 #comment Reported by: Jan Svoboda


Merged revisions 413121 from

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

9 years agores_pjsip_sdp_rtp: Fix issue where sending a hold SDP twice could cause an unhold.
Joshua Colp [Wed, 30 Apr 2014 12:39:11 +0000 (12:39 +0000)]
res_pjsip_sdp_rtp: Fix issue where sending a hold SDP twice could cause an unhold.

This change fixes a bug where if an SDP with media address and sendonly was
received twice the underlying call would go off hold, instead of remaining on hold.
This occured because the code did not properly take into account that the SDP
may contain both a valid media address and the sendonly attribute.

The code now examines the sendonly attribute and media address first, so if the
SDP is received again no change will occur.

ASTERISK-23558 #comment Reported by: John Bigelow


Merged revisions 413119 from

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

9 years agochan_pjsip: Add support for picking up calls in the configured pickup group.
Joshua Colp [Wed, 30 Apr 2014 12:32:12 +0000 (12:32 +0000)]
chan_pjsip: Add support for picking up calls in the configured pickup group.



Merged revisions 413117 from

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

9 years agoAdd "destroy" implementation for spinlock.
George Joseph [Tue, 29 Apr 2014 15:10:24 +0000 (15:10 +0000)]
Add "destroy" implementation for spinlock.

The original commit for spinlock was missing "destroy" implementations.
Most of them are no-ops but phtread_spin and pthread_mutex do need their
locks destroyed.

Merged revisions 413102 from

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

9 years agochan_pjsip: Implement core ability to get Call-ID of a channel.
Joshua Colp [Tue, 29 Apr 2014 11:27:14 +0000 (11:27 +0000)]
chan_pjsip: Implement core ability to get Call-ID of a channel.

This changes implement the "get_pvt_uniqueid" which is used to return the
technology specific unique identifier. In the case of SIP this is the Call-ID
of the dialog.


Merged revisions 413088 from

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

9 years agoBridging: Don't lock NULL bridges
Kinsey Moore [Mon, 28 Apr 2014 20:07:37 +0000 (20:07 +0000)]
Bridging: Don't lock NULL bridges

When bridge locking was added for bridge snapshot creation, some
locations where bridge locking was added were not guaranteed to
actually have a bridge and locking NULL AO2 objects tends to cause
segfaults. This ensures that NULL bridges aren't locked.

Merged revisions 413073 from

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

9 years agoAdd DeviceStateChanged and PresenceStateChanged AMI events.
Mark Michelson [Mon, 28 Apr 2014 14:40:21 +0000 (14:40 +0000)]
Add DeviceStateChanged and PresenceStateChanged AMI events.

These events are controlled by two new modules, res_manager_devicestate
and res_manager_presencestate.


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

9 years agoIntroducing changes proposed to chan_unistim driver:
Igor Goncharovskiy [Mon, 28 Apr 2014 07:43:33 +0000 (07:43 +0000)]
Introducing changes proposed to chan_unistim driver:
1) Added the unistim.conf variable dtmf_duration which can select the DTMF playback duration from 0ms to 150ms (0 is off and is the new default)
2) Enabled the transmission of month names, which are sent with the date and changed the dateformat variable to accept the values 0-3 as per the UNISTIM standard (2 & 3 match the previous 1 & 2 formats).
3) Enabled the "Mute" packet so muting microphone works as expected and microphone muted for all calls while LED light on
4) Changed Duree to Timer on i2004 display

(closes issue ASTERISK-23592)

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

9 years agotcptls.c : Log errors as ERROR, not warning or something else.
Olle Johansson [Sun, 27 Apr 2014 19:29:27 +0000 (19:29 +0000)]
tcptls.c : Log errors as ERROR, not warning or something else.

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

9 years agores_rtp_asterisk: Add support for DTLS handshake retransmissions
Matthew Jordan [Fri, 25 Apr 2014 19:26:14 +0000 (19:26 +0000)]
res_rtp_asterisk: Add support for DTLS handshake retransmissions

On congested networks, it is possible for the DTLS handshake messages to get
lost. This patch adds a timer to res_rtp_asterisk that will periodically
check to see if the handshake has succeeded. If not, it will retransmit the
DTLS handshake.


ASTERISK-23649 #close
Reported by: Nitesh Bansal
  dtls_retransmission.patch uploaded by Nitesh Bansal (License 6418)

Merged revisions 413008 from

Merged revisions 413009 from

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

9 years agopjsip realtime: increase the size of some columns
Kevin Harwell [Thu, 24 Apr 2014 14:37:54 +0000 (14:37 +0000)]
pjsip realtime: increase the size of some columns

The string lengths on certain columns created through alembic for PJSIP were
too short. For instance, columns containing URIs are currently set to 40
characters, but this can be too small and result in truncated values.  Added
an alembic migration script that increases the size of these columns and a
few others to 255.

ASTERISK-23639 #close
Reported by: Mark Michelson

Merged revisions 412992 from

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

9 years agoThis patch adds support for spinlocks in Asterisk.
George Joseph [Wed, 23 Apr 2014 20:13:30 +0000 (20:13 +0000)]
This patch adds support for spinlocks in Asterisk.

There are cases in Asterisk where it might be desirable to lock
a short critical code section but not incur the context switch
and yield penalty of a mutex or rwlock.  The primary spinlock
implementations execute exclusively in userspace and therefore
don't incur those penalties.  Spinlocks are NOT meant to be a
general replacement for mutexes.  They should be used only for
protecting short blocks of critical code such as simple compares
and assignments.  Operations that may block, hold a lock, or
cause the thread to give up it's timeslice should NEVER be
attempted in a spinlock.

The first use case for spinlocks is in astobj2 - internal_ao2_ref.
Currently the manipulation of the reference counter is done with
an ast_atomic_fetchadd_int which works fine.  When weak reference
containers are introduced however, there's an additional comparison
and assignment that'll need to be done while the lock is held.
A mutex would be way too expensive here, hence the spinlock.
Given that lock contention in this situation would be infrequent,
the overhead of the spinlock is only a few more machine instructions
than the current ast_atomic_fetchadd_int call.

ASTERISK-23553 #close

Merged revisions 412976 from

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

9 years agohttp: Fix spurious ERROR message in responses with no content.
Richard Mudgett [Wed, 23 Apr 2014 18:03:41 +0000 (18:03 +0000)]
http: Fix spurious ERROR message in responses with no content.

Backport -r411687 and fix the fix because content_length is the length of
out plus the length of the file controlled by fd.

When a response has an out content length of 0, fwrite would be called to
write a buffer with no data in it.  This resulted in the following classic
error message:

  [Apr  3 11:49:17] ERROR[26421] http.c: fwrite() failed: Success

This patch makes it so that we only attempt to write the content of out if
the out string is non-zero.

Merged revisions 412922 from

Merged revisions 412923 from

Merged revisions 412924 from

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

9 years agoFix error loading res_monitor.
Russell Bryant [Wed, 23 Apr 2014 15:02:39 +0000 (15:02 +0000)]
Fix error loading res_monitor.

For some odd reason, loading app_mixmonitor was fine, but res_monitor was not.
This patch fixes a set of issues related to func_periodic_hook exporting the
beep functions that gets res_monitor working again.

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

9 years agores_stasis: Fix crash when handling a failed blind transfer message.
Joshua Colp [Tue, 22 Apr 2014 10:09:36 +0000 (10:09 +0000)]
res_stasis: Fix crash when handling a failed blind transfer message.

This changes fixes a crash that occurs when stasis determines if it
should send a message out to an application or not. The code
incorrectly assumed that a bridge snapshot would always be present
when in reality for failure cases it may not be.

ASTERISK-23573 #close

Merged revisions 412882 from

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

9 years agochan_sip: trust_id_outbound CHANGES message improvement
Jonathan Rose [Mon, 21 Apr 2014 17:56:26 +0000 (17:56 +0000)]
chan_sip: trust_id_outbound CHANGES message improvement

(closes issue AST-1301)

(closes issue ASTERISK-19465)
Reported by: Krzysztof Chmielewski

Merged revisions 412821 from

Merged revisions 412822 from

Merged revisions 412823 from

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

9 years agochan_sip: Add sendrpid trust options
Jonathan Rose [Mon, 21 Apr 2014 16:20:32 +0000 (16:20 +0000)]
chan_sip: Add sendrpid trust options

In r411189, some behavior was changed which made sendrpid behavior
act in a more trusting manner by sending full user data for peers
set with private caller presence in P-Asserted-Identity headers.
Since this changed long time expected behaviors, we decided to pull
that patch when that was pointed out by the community. Instead, this
patch provides a trust_id_outbound setting which will expose the data
per RFC-3325 if set to 'yes' and simply not send the PAI/RPID headers
at all if set to 'no'. By default trust_id_outbound will be set to
'legacy' which will preserve the behavior prior to these patches.
Extra special thanks to Walter Doekes for providing advice and

(closes issue AST-1301)

(closes issue ASTERISK-19465)
Reported by: Krzysztof Chmielewski


Merged revisions 412744 from

Merged revisions 412746 from

Merged revisions 412747 from

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

9 years agoHTTP: Add TCP_NODELAY to accepted connections
Kinsey Moore [Mon, 21 Apr 2014 16:16:37 +0000 (16:16 +0000)]
HTTP: Add TCP_NODELAY to accepted connections

This adds the TCP_NODELAY option to accepted connections on the HTTP
server built into Asterisk. This option disables the Nagle algorithm
which controls queueing of outbound data and in some cases can cause
delays on receipt of response by the client due to how the Nagle
algorithm interacts with TCP delayed ACK. This option is already set on
all non-HTTP AMI connections and this change would cover standard HTTP
requests, manager HTTP connections, and ARI HTTP requests and
websockets in Asterisk 12+ along with any future use of the HTTP


Merged revisions 412745 from

Merged revisions 412748 from

Merged revisions 412749 from

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

9 years agoConfbridge: Fix ConfbridgeKick AMI documentation
Kinsey Moore [Mon, 21 Apr 2014 14:58:12 +0000 (14:58 +0000)]
Confbridge: Fix ConfbridgeKick AMI documentation

This adds documentation for the "all" channel option for the
ConfbridgeKick AMI action and adjusts AMI responses accordingly.

(issue ASTERISK-23282)
Reported by: Dorian Logan

Merged revisions 412730 from

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

9 years agoConfbridge: Add references for kick all option
Kinsey Moore [Mon, 21 Apr 2014 14:47:37 +0000 (14:47 +0000)]
Confbridge: Add references for kick all option

After the ability to kick all attendees from a conference was added, a
rework removed the comment about that feature from the CLI
documentation. This adds that documentation and adds "all" to the
participant tab completion list for the confbridge kick command.

(closes issue ASTERISK-23282)
Reported by: Dorian Logan

Merged revisions 412728 from

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

9 years agoFix wrong dialtone. The "modulation" should not be referenced for tone+tone as it...
Igor Goncharovskiy [Mon, 21 Apr 2014 08:36:18 +0000 (08:36 +0000)]
Fix wrong dialtone. The "modulation" should not be referenced for tone+tone as it refers to the on-off characteristic - this often resulted in a single tone rather than the multitone as in the UK.

Merged revisions 412712 from

Merged revisions 412713 from

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

9 years agomain/asterisk: Fix startup sequence for realtime features
Matthew Jordan [Sat, 19 Apr 2014 02:14:12 +0000 (02:14 +0000)]
main/asterisk: Fix startup sequence for realtime features

When ASTERISK-23265/ASTERISK-23320 was fixed, it inadvertently led to realtime
features breaking. This was due to features loading prior to realtime. This
patch fixes this by loading features after loading dynamic modules.

ASTERISK-23487 #close
Reported by: Denis
Tested by: Denis

Merged revisions 412698 from

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

9 years agoapp_sms: Fix uninitialized values; hangup channel when REL is sent successfully
Matthew Jordan [Sat, 19 Apr 2014 01:31:27 +0000 (01:31 +0000)]
app_sms: Fix uninitialized values; hangup channel when REL is sent successfully

This patch fixes two issues in app_sms:
(1) Firstly, the 'flags' field on the stack in sms_exec() is uninitialised,
    causing it to use the wrong protocol in some cases. This patch correctly
    initializes the flags fields.

(2) Secondly, when disconnect supervision is not working or
    inbanddisconnect=yes is set in chan_dahdi.conf, app_sms was failing to
    terminate the call after it sent the REL(ease) message and the peer stopped
    talking to it. This patch fixes the code to handle the 'bad stop bit'
    message more gracefully in that case, and hang up the call.


ASTERISK-18331 #close
Reported by: David Woodhouse
  asterisk-fix-sms.patch uploaded by David Woodhouse (License 5754)

Merged revisions 412655 from

Merged revisions 412656 from

Merged revisions 412657 from

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

9 years agoARI: Make bridges/{bridgeID}/play queue sound files
Jonathan Rose [Fri, 18 Apr 2014 20:09:24 +0000 (20:09 +0000)]
ARI: Make bridges/{bridgeID}/play queue sound files

Previously multiple play actions against a bridge at one time would cause
the sounds to play simultaneously on the bridge. Now if a sound is already
playing, the play action will queue playback to occur after the completion
of other sounds currently on the queue.

(closes issue ASTERISK-22677)
Reported by: John Bigelow

Merged revisions 412639 from

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

9 years agosounds: Fix Sounds Makefile and XML that didn't support new sound prompt sets
Rusty Newton [Fri, 18 Apr 2014 17:17:25 +0000 (17:17 +0000)]
sounds: Fix Sounds Makefile and XML that didn't support new sound prompt sets

In sounds/Makefile

 1 Adds and moves some lines necessary for the en_GB core set. I'm just following how the other sets are defined here.
 2 removes the ES extra sounds related lines as we don't have ES extra sound sets.

In sounds/sounds.xml

 3 Adds member definitons for EN_AU, EN_GB, IT for core sound sets, and EN_GB in extra sound sets

ASTERISK-23550 #close

Merged revisions 412586 from

Merged revisions 412587 from

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

9 years agoAllow for multiple contacts to be configured in a single contact= line.
Mark Michelson [Fri, 18 Apr 2014 17:02:24 +0000 (17:02 +0000)]
Allow for multiple contacts to be configured in a single contact= line.

This is useful for configuring multiple permanent contacts for an AOR when using
realtime AORs.


Merged revisions 412582 from

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

9 years agoOriginated calls: Fix several originate call problems.
Richard Mudgett [Fri, 18 Apr 2014 16:44:48 +0000 (16:44 +0000)]
Originated calls: Fix several originate call problems.

* Restore the reason value set by pbx_outgoing_attempt() to use
AST_CONTROL_xxx values as all the consumers were expecting rather than
cause codes.

* Fixed the dial routines to set cause codes for more than just
ast_request() so pbx_outgoing_attempt() reason codes will function.

* Fix inconsistent locked_channel return status in pbx_outgoing_attempt().
The chanel may not have been locked or the channel may have been a stale

* Fixed the OutgoingSpoolFailed channel to run dialplan whenever the
dialing fails for an originate exten and 1 < synchronous.

* Fix incorrect ast_cond_wait() usage in pbx_outgoing_attempt().
Indroduced by issue ASTERISK-22212 patch.

* Made struct pbx_outgoing use the ao2 lock instead of its own lock for
the cond wait mutex.  No sense in having two locks associated with the
same struct when only one is needed.


Merged revisions 412581 from

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

9 years agoapp_dial and app_queue: Make lock the forwarding channel while taking the channel...
Richard Mudgett [Fri, 18 Apr 2014 16:27:31 +0000 (16:27 +0000)]
app_dial and app_queue: Make lock the forwarding channel while taking the channel snapshot.

* Fixed ast_channel_publish_dial_forward() not locking the forwarded
channel when taking the channel snapshot.

* Fixed app_dial.c:do_forward() using the wrong channel to get the
original call forwarding string.

* Removed unnecessary locking when calling ast_channel_publish_dial() and
ast_channel_publish_dial_forward() in app_dial and app_queue.  Holding
channel locks when calling ast_channel_publish_dial_forward() with a
forwarded channel could result in pausing the system while the stasis bus
completes processsing a forwarded channel subscription.


Merged revisions 412579 from

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

9 years agoARI: Add debug logging for events and responses
Kinsey Moore [Fri, 18 Apr 2014 14:25:47 +0000 (14:25 +0000)]
ARI: Add debug logging for events and responses

This adds DEBUG level logging for ARI websocket events and HTTP
responses similar to what is available for AMI. Logging for ARI HTTP
requests is already adequate for debugging purposes.

Merged revisions 412565 from

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

9 years agores_pjsip: Handle reloading when permanent contacts exist and qualify is configured.
Joshua Colp [Thu, 17 Apr 2014 22:50:23 +0000 (22:50 +0000)]
res_pjsip: Handle reloading when permanent contacts exist and qualify is configured.

This change fixes a problem where permanent contacts being qualified were not
being updated. This was caused by the permanent contacts getting a uuid and not a
known identifier, causing an inability to look them up when updating in the
qualify code. A bug also existed where the new configuration may not be available
immediately when updating qualifies.

(closes issue ASTERISK-23514)
Reported by: Richard Mudgett


Merged revisions 412551 from

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

9 years agoFix a silly shadowed variable mistake that was missed from play tones patch
Jonathan Rose [Thu, 17 Apr 2014 22:42:57 +0000 (22:42 +0000)]
Fix a silly shadowed variable mistake that was missed from play tones patch

Merged revisions 412549 from

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

9 years agoARI: Add tones playback resource
Jonathan Rose [Thu, 17 Apr 2014 21:57:36 +0000 (21:57 +0000)]
ARI: Add tones playback resource

Adds a tones URI type to the playback resource. The tone can be specified by
name (from indications.conf) or by a tone pattern. In addition, tonezone can
be specified in the URI (by appending ;tonezone=<zone>). Tones must be
stopped manually in order for a stasis control to move on from playback of
the tone. Tones may be paused, resumed, restarted, and stopped. They may
not be rewound or fast forwarded (tones can't be controlled in a way that
lets you skip around from note to note and pausing and resuming will also
restart the tone from the beginning). Tests are currently in development
for this feature (

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

Merged revisions 412535 from

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

9 years agomain/Makefile: Fix build failure on SmartOS/Illumos/SunOS
Matthew Jordan [Thu, 17 Apr 2014 20:25:16 +0000 (20:25 +0000)]
main/Makefile: Fix build failure on SmartOS/Illumos/SunOS

This patch fixes two issues when building on SmartOS:

- channels/chan_oss.c: it makes sure soundcard.h is found
- main/Makefile: only use "-Wl,--version-script" when GNU LD is used as the Sun
  Linker doesn't support that. Similar checks are already used elswhere in the


ASTERISK-23576 #close
Reported by: Sebastian Wiedenroth
  fix-sunos.diff uploaded by Sebastian Wiedenroth (License 6597)

Merged revisions 412468 from

Merged revisions 412483 from

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

9 years agochan_sip: Add SIPURIPHONECONTEXT channel variable for Request TEL URIs
Matthew Jordan [Thu, 17 Apr 2014 19:50:05 +0000 (19:50 +0000)]
chan_sip: Add SIPURIPHONECONTEXT channel variable for Request TEL URIs

This patch is a continuation of,
committed in r412303.

It resolves a finding oej had that the phone-context be available in a
channel variable separate from SIPDOMAIN. This patch adds that variable as
SIPURIPHONECONTEXT. It also allows a local number (or global number specified
in the TEL URI) to be used to look up as a peer.

(issue ASTERISK-17179)


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

9 years agores_pjsip_refer: Channel variable SIPREFERTOHDR not being set during blind transfer
Kevin Harwell [Thu, 17 Apr 2014 15:17:39 +0000 (15:17 +0000)]
res_pjsip_refer: Channel variable SIPREFERTOHDR not being set during blind transfer

The SIPREFERTOHDR channel variable is not being set on any channel when
performing a blind transfer using PJSIP. The 'refer->refer_to' was not
being set during a blind transfer.  Updated so the 'refer_to' is set to
the target uri on a blind transfer.

(closes issue ASTERISK-23502)
Reported by: John Bigelow

Merged revisions 412453 from

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

9 years agoStasis: Add a usage note on stasis_app_get_bridge
Kinsey Moore [Wed, 16 Apr 2014 19:14:37 +0000 (19:14 +0000)]
Stasis: Add a usage note on stasis_app_get_bridge

This function returns an ast_bridge without a refcount bump and the
caller must increment the count if it intends to hold the pointer.

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

Merged revisions 412439 from

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

9 years ago(mix)monitor: Add options to enable a periodic beep
Russell Bryant [Tue, 15 Apr 2014 23:21:19 +0000 (23:21 +0000)]
(mix)monitor: Add options to enable a periodic beep

Add an option to enable a periodic beep to be played into a call if it
is being recorded.  If enabled, it uses the PERIODIC_HOOK() function
internally to play the 'beep' prompt into the call at a specified
interval.  This option is provided for both Monitor() and


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

9 years agoEliminate some more unnecessary RAII_VAR() uses.
Richard Mudgett [Tue, 15 Apr 2014 18:30:24 +0000 (18:30 +0000)]
Eliminate some more unnecessary RAII_VAR() uses.

RAII_VAR() is not a hammer appropriate to pound all nails.

Merged revisions 412413 from

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

9 years agoRemove unused RAII_VAR() declarations.
Richard Mudgett [Tue, 15 Apr 2014 18:01:47 +0000 (18:01 +0000)]
Remove unused RAII_VAR() declarations.

* Remove unused RAII_VAR() declarations.  The compiler cannot catch these
because the cleanup function "references" the unused variable.  Some
actually allocated and released resources that were never used.

* Fixed some whitespace issues in stasis_bridges.c.

Merged revisions 412399 from

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

9 years agochan_sip.c: Fix channel staging assertion failure.
Richard Mudgett [Tue, 15 Apr 2014 17:07:20 +0000 (17:07 +0000)]
chan_sip.c: Fix channel staging assertion failure.

The failing assertion ensures that the final snapshot gets generated so
CDR records can get finalized.  The only place where a channel staging
snapshot flag could be left set is in chan_sip.c:handle_request_bye().
The function could return before clearing the flag because the channel
could dissappear while the function had to have the channel unlocked.

* Fixed handle_request_bye() channel snapshot staging coverage area to not
have a return in the middle of it and be unable to clear the staging flag.

* Pushed the channel snapshot staging coverage area into
ast_rtp_instance_set_stats_vars() to ensure that the staging is not

* Made callers of ast_rtp_instance_set_stats_vars() not call it with any
channels or channel driver private locks held to eliminate the deadlock
potential.  The callers must hold references to the passed in channel and
rtp objects.

* Eliminated sip_hangup() trying to get the bridge peer.  It is futile at
this point because the channel could never be in a bridge.


Merged revisions 412385 from

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

9 years agochan_sip.c: Moved some sip_pvt unrefs after their last use.
Richard Mudgett [Tue, 15 Apr 2014 16:38:35 +0000 (16:38 +0000)]
chan_sip.c: Moved some sip_pvt unrefs after their last use.

* Moved sip_pvt unref in ast_hangup() and handle_request_do() to the end
of the function.  The unref needs to happen after the last use of the

Merged revisions 412348 from

Merged revisions 412383 from

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

9 years agoReverting r411189 so that it can be put up for public review
Jonathan Rose [Tue, 15 Apr 2014 16:13:35 +0000 (16:13 +0000)]
Reverting r411189 so that it can be put up for public review

  r411189 | jrose | 2014-03-26 10:50:48 -0500 (Wed, 26 Mar 2014) | 12 lines

  chan_sip: Send real CallerID information with P-Assserted-Identity (RFC-3325)

  Prior to this patch, the P-Asserted-Identity header would include anonymous
  caller id information which seems to go against the point of the
  P-Asserted-Identity header. Now the real caller ID information will be
  included in this header. Also, no privacy header would be included.
  This patch adds 'Privacy: id' to outgoing SIP messages that include the
  P-Asserted-Identity header.

  (closes issue AST-1301)

Merged revisions 412328 from

Merged revisions 412329 from

Merged revisions 412330 from

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

9 years agoautoservice: fix reference leak of logger callid.
Corey Farrell [Mon, 14 Apr 2014 15:54:50 +0000 (15:54 +0000)]
autoservice: fix reference leak of logger callid.

autoservice acquires a local reference to the logger callid of each channel
in a loop.  This local reference was not released, causing the callid of
every channel in autoservice to leak.  This change moves the callid unref
inside the loop.

ASTERISK-23616 #close
Reported by: ibercom

Merged revisions 412305 from

Merged revisions 412306 from

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

9 years agochan_sip: Support RFC-3966 TEL URIs in inbound INVITE requests
Matthew Jordan [Sat, 12 Apr 2014 02:27:43 +0000 (02:27 +0000)]
chan_sip: Support RFC-3966 TEL URIs in inbound INVITE requests

This patch adds support for handling TEL URIs in inbound INVITE requests.
This includes the Request URI and the From URI. The number specified in
the Request URI will be the destination of the inbound channel in the dialplan.
The phone-context specified in the Request URI will be stored in the
TELPHONECONTEXT channel variable.


ASTERISK-17179 #close
Reported by: Geert Van Pamel
Tested by: Geert Van Pamel
  asterisk-12.0.0-chan_sip-RFC3966_patch.txt uploaded by Geert Van Pamel (License 6140)
  asterisk-12.0.0-reqresp_parser-RFC3966_patch.txt uploaded by Geert Van Pamel (License 6140)

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

9 years agofunc_periodic_hook: move module ref
Russell Bryant [Sat, 12 Apr 2014 01:35:34 +0000 (01:35 +0000)]
func_periodic_hook: move module ref

The previous code left one error path where the module would be unref'd twice
instead of once.  It was done once in the error handling block, and again inside
of datastore destruction.

Now the module ref is only released in the datastore destructor and only acquired
when the datastore has been successfully allocated.

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

9 years agofunc_periodic_hook: add module ref counting
Russell Bryant [Sat, 12 Apr 2014 01:26:28 +0000 (01:26 +0000)]
func_periodic_hook: add module ref counting

This module lacked necessary module ref count incrementing and decrementing
when used.  This patch adds it.  There's already a datastore used, so doing the
ref counting along with the lifetime of the datastore provides a convenient
place to do it.

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

9 years agoapp_stack: Add missing unlock in off-nominal path of STACK_PEEK function.
Richard Mudgett [Fri, 11 Apr 2014 21:43:30 +0000 (21:43 +0000)]
app_stack: Add missing unlock in off-nominal path of STACK_PEEK function.

ASTERISK-23620 #close
Reported by: Bradley Watkins
      ASTERISK-23620_unlock_oldlist.patch (license #5021) patch uploaded by Bradley Watkins

Merged revisions 412225 from

Merged revisions 412226 from

Merged revisions 412227 from

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

9 years agoutils dir: Remove no longer needed traces of refcounter except in the clean make...
Richard Mudgett [Fri, 11 Apr 2014 18:04:41 +0000 (18:04 +0000)]
utils dir: Remove no longer needed traces of refcounter except in the clean make target.

* Removed no longer needed files from the svn:ignore property to make them visible.

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

9 years agobridging: Ensure locking during snapshot creation
Kinsey Moore [Fri, 11 Apr 2014 12:43:34 +0000 (12:43 +0000)]
bridging: Ensure locking during snapshot creation

While the vast majority of bridge snapshot creation is locked properly,
there are currently some instances that are not. This adds the missing
locking to ensure bridge state is not malleable during snapshot

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

Merged revisions 412193 from

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

9 years agoFormatting: Remove invisible characters
Olle Johansson [Fri, 11 Apr 2014 08:28:14 +0000 (08:28 +0000)]
Formatting: Remove invisible characters

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

9 years agoFormatting only.
Olle Johansson [Fri, 11 Apr 2014 07:07:36 +0000 (07:07 +0000)]
Formatting only.

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

9 years agomain/astobj2: Make REF_DEBUG a menuselect item; improve REF_DEBUG output
Matthew Jordan [Fri, 11 Apr 2014 02:59:19 +0000 (02:59 +0000)]
main/astobj2: Make REF_DEBUG a menuselect item; improve REF_DEBUG output

This patch does the following:
(1) It makes REF_DEBUG a meneselect item. Enabling REF_DEBUG now enables
    REF_DEBUG globally throughout Asterisk.
(2) The ref debug log file is now created in the AST_LOG_DIR directory.
    Every run will now blow away the previous run (as large ref files
    sometimes caused issues). We now also no longer open/close the file
    on each write, instead relying on fflush to make sure data gets written
    to the file (in case the ao2 call being performed is about to cause a
(3) It goes with a comma delineated format for the ref debug file. This
    makes parsing much easier. This also now includes the thread ID of the
    thread that caused ref change.
(4) A new python script instead for refcounting has been added in the
    contrib/scripts folder.
(5) The old refcounter implementation in utils/ has been removed.


Merged revisions 412114 from

Merged revisions 412115 from

Merged revisions 412153 from

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

9 years agomonitor: use app options parsing helper code
Russell Bryant [Fri, 11 Apr 2014 01:12:54 +0000 (01:12 +0000)]
monitor: use app options parsing helper code

This app is pretty ancient, so it was never converted to use the
option parsing helper code.  I'd like to add an option to this app
that takes an argument, and that's a pain to do when not using this
helper, so start by doing this conversion.


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

9 years agores_hep_pjsip: Use the channel name instead of the call ID when it is available
Matthew Jordan [Thu, 10 Apr 2014 21:28:08 +0000 (21:28 +0000)]
res_hep_pjsip: Use the channel name instead of the call ID when it is available

During discussions with Alexandr Dubovikov at Kamailio World, it became
apparent that while the SIP call ID is a useful identifier prior to an Asterisk
channel being created, it is far more preferable to use the channel name (or
some channel based identifier) when the channel is available. Homer is smart
enough to tie the various messages together. This patch opts to use the channel
name when it is available, falling back to the call ID otherwise.

Merged revisions 412088 from

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

9 years agores_pjsip_pubsub: Set the body generation result to 0 for a valid path
Kevin Harwell [Thu, 10 Apr 2014 21:10:46 +0000 (21:10 +0000)]
res_pjsip_pubsub: Set the body generation result to 0 for a valid path

The result of the "ast_sip_pubsub_generate_body_content" was not
set/initialized.  Consequently, the nominal path potentially returned
an invalid value, thus not sending mwi notifications.

Merged revisions 412074 from

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

9 years agoAdd a Command header to the AMI Mixmonitor action.
Mark Michelson [Wed, 9 Apr 2014 21:43:23 +0000 (21:43 +0000)]
Add a Command header to the AMI Mixmonitor action.

This fixes a parsing error that occurred during the processing of
the AMI action. The error did not result in MixMonitor itself
misbehaving, but it could result in the AMI response not giving
correct information back.

The new header allows for one to specify a post-process command
to run when recording finishes. Previously, in order to do this,
the post-process command would have to be placed at the end of
the Options: header.

Patches: mixmonitor_command_2.patch by jhardin (License #6512)

Merged revisions 412048 from

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

9 years agores_stasis_answer: Add missing newlines
Kinsey Moore [Wed, 9 Apr 2014 18:17:01 +0000 (18:17 +0000)]
res_stasis_answer: Add missing newlines

Merged revisions 412034 from

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

9 years agoInternal timing: Add notice that the -I and internal_timing option are no longer...
Richard Mudgett [Tue, 8 Apr 2014 21:25:15 +0000 (21:25 +0000)]
Internal timing: Add notice that the -I and internal_timing option are no longer needed.

Add notice messages during execution that the -I command line option and
the astersik.conf internal_timing option are no longer needed.  The
internal timing functionality is now always enabled if there is a timing
module loaded.

NOTE: Since the command line options and the asterisk.conf config file are
processed before the logging system is initialized, the messages are
output to stderr.

Change requested as a result of asterisk-dev list comments about the
commit for ASTERISK-22846 that removed the -I and internal_timing options.


Merged revisions 411964 from

Merged revisions 411974 from

Merged revisions 411985 from

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

9 years agoconfig: Fix CB_ADD_LEN() to work as originally intended.
Richard Mudgett [Tue, 8 Apr 2014 20:53:33 +0000 (20:53 +0000)]
config: Fix CB_ADD_LEN() to work as originally intended.

Fix a long standing bug in CB_ADD_LEN() behaving like CB_ADD().

ASTERISK-23546 #close
Reported by: Walter Doekes

Merged revisions 411960 from

Merged revisions 411961 from

Merged revisions 411962 from

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

9 years agoapp_confbridge: Fix confbridge.conf dsp_talking_threshold option setting wrong parameter.
Richard Mudgett [Tue, 8 Apr 2014 18:10:43 +0000 (18:10 +0000)]
app_confbridge: Fix confbridge.conf dsp_talking_threshold option setting wrong parameter.

Fixed copy pasta error.

ASTERISK-23545 #close
Reported by: John Knott

Merged revisions 411944 from

Merged revisions 411945 from

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

9 years agores_pjsip: Ignore explicit transport configuration if a WebSocket transport is specified.
Joshua Colp [Tue, 8 Apr 2014 14:49:47 +0000 (14:49 +0000)]
res_pjsip: Ignore explicit transport configuration if a WebSocket transport is specified.

This change makes it so if a transport is configured on an endpoint that is a WebSocket
type the option will be ignored. In practice this is fine because the WebSocket
transport can not create outgoing connections, it can only reuse existing ones. By
ignoring the option the existing PJSIP logic for using the existing connection will
be invoked and stuff will proceed.

(closes issue ASTERISK-23584)
Reported by: Rusty Newton

Merged revisions 411927 from

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

9 years agofunc_periodic_hook: List more modules as dependencies
Russell Bryant [Tue, 8 Apr 2014 00:26:57 +0000 (00:26 +0000)]
func_periodic_hook: List more modules as dependencies

This module makes use of some existing Asterisk components.  app_chanspy was
already listed as a dependency.  There are a few function modules used, as
well, so list them.

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

9 years agoPJSIP: Ensure test event has new state
Kinsey Moore [Mon, 7 Apr 2014 20:41:05 +0000 (20:41 +0000)]
PJSIP: Ensure test event has new state

The change that fixed the pubsub test event's use of a dangling pointer
also changed when it was processed relative to the pjsip subscription
state change processing. This change corrects the order of events while
holding a reference to the pointer that was previously dangling.

Merged revisions 411883 from

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

9 years agoAGI/Manager: Prevent multiple NewExten events during AGI application changes
Jonathan Rose [Mon, 7 Apr 2014 16:15:34 +0000 (16:15 +0000)]
AGI/Manager: Prevent multiple NewExten events during AGI application changes

AGI applications would trigger NewExten events every time the state of the AGI
application changed. This has historically not been the behavior and this
behavior was introduced with a CDR patch. This patch corrects that.

(closes issue ASTERISK-23390)
Reported by: Benjamin Keith Ford

Merged revisions 411868 from

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

9 years agoapp_queue: Re-add HoldTime to QueueCallerAbandon event (simple typo during ast12...
Walter Doekes [Mon, 7 Apr 2014 14:57:57 +0000 (14:57 +0000)]
app_queue: Re-add HoldTime to QueueCallerAbandon event (simple typo during ast12 refactor).

Reported by: Ibrahim22 (on IRC)
Tested by: Ibrahim22

Merged revisions 411811 from

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

9 years agoBlocked revisions 411809
Walter Doekes [Mon, 7 Apr 2014 14:53:02 +0000 (14:53 +0000)]
Blocked revisions 411809

configs: Clean up long line and typo in res_odbc.conf.sample.

Merged revisions 411807 from

Merged revisions 411808 from

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

9 years agoStasis: Fix Stasis() bridge refcount issue
Kinsey Moore [Mon, 7 Apr 2014 14:29:37 +0000 (14:29 +0000)]
Stasis: Fix Stasis() bridge refcount issue

The Stasis() dialplan application monitors what bridge a channel is in
and so necessarily holds on to a bridge pointer. This change ensures
that it also holds on to a reference for that bridge to prevent the
bridge pointer from becoming a dangling pointer.

Merged revisions 411804 from

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

9 years agoPJSIP: Fix crash introduced in r411671
Kinsey Moore [Mon, 7 Apr 2014 13:30:25 +0000 (13:30 +0000)]
PJSIP: Fix crash introduced in r411671

The test event introduced in revision 411671 uses a dangling pointer to
access information about pubsub state changes. This moves the event to
within the lifetime of the pointer.

Merged revisions 411790 from

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

9 years agofunc_periodic_hook: New function for periodic hooks.
Russell Bryant [Sat, 5 Apr 2014 13:06:34 +0000 (13:06 +0000)]
func_periodic_hook: New function for periodic hooks.

This commit introduces a new dialplan function, PERIODIC_HOOK().
It allows you run to a dialplan hook on a channel periodically.  The
original use case that inspired this was the ability to play a beep
periodically into a call being recorded.  The implementation is much
more generic though and could be used for many other things.

The implementation makes heavy use of existing Asterisk components.
It uses a combination of Local channels and ChanSpy() to run some
custom dialplan and inject any audio it generates into an active call.

The other important bit of the implementation is how it figures out
when to trigger the beep playback.  This implementation uses the
audiohook API, even though it's not actually touching the audio in any
way.  It's a convenient way to get a callback and check if it's time
to kick off another beep.  It would be nice if this was timer event
based instead of polling based, but unfortunately I don't see a way to
do it that won't interfere with other things.


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

9 years agointernal_timing: Remove the option and always make it enabled if a timing module...
Richard Mudgett [Fri, 4 Apr 2014 19:19:55 +0000 (19:19 +0000)]
internal_timing: Remove the option and always make it enabled if a timing module is loaded.

The masquerade supertest frequently fails because either the local channel
chain doesn't completely optimize out or the DTMF handshake doesn't
completely get accross.  Local channel optimization requires frames
flowing to trigger when optimization can happen.  When optimization
happens the media frame that triggered the optimization is dropped.
Sending DTMF requires frames to flow in the other direction for timing
purposes while sending nothing.  If internal timing is not enabled when
MOH is playing, Asterisk switches to received timing when an audio frame
is received.  With optimization dropping media frames and MOH not sending
frames unless it receives frames, occasionaly there are no more frames
being passed and the test fails.

* The asterisk command line -I option and the asterisk.conf
internal_timing option are removed.  Asterisk now always uses internal
timing when needed if any timing module is loaded.  The issue
ASTERISK-14861 did this quite awhile ago in v1.4 but effectively is broken
if other internal timing modules besides DAHDI are used.  The
ast_read_generator_actions() now only does received timing if it has no
choice for frame generators like MOH, silence, and playback streaming.

* Cleaned up some code dealing with frame generators in
ast_deactivate_generator(), generator_write_format_change(),
ast_activate_generator(), and ast_channel_stop_silence_generator().

* Removed ast_internal_timing_enabled(), AST_OPT_FLAG_INTERNAL_TIMING, and

ASTERISK-22846 #close
Reported by: Matt Jordan


Merged revisions 411715 from

Merged revisions 411716 from

Merged revisions 411717 from

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

9 years agoAdd some asserts that were handy when looking for a stasis cache problem.
Richard Mudgett [Fri, 4 Apr 2014 17:57:46 +0000 (17:57 +0000)]
Add some asserts that were handy when looking for a stasis cache problem.

* Assert if a channel is destroyed but has the snapshot staging flag set.
In this case the final channel destruction snapshot would never get taken.

* Assert if what we just got out of the stasis cache is not what we were
looking for.  This assert would have saved several days searching for a
bug and a lot of my hair.

* Assert if the music on hold message posts could not find the associated
channel.  A crash will happen later when manager tries to send the MOH AMI
message.  This assert catches the problem when the stasis message is
posted instead of by the thread processing the defective message.

* Always generate a backtrace when an ast_assert() fails.


Merged revisions 411701 from

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

9 years agohttp: Fix spurious ERROR message in responses with no content
Matthew Jordan [Fri, 4 Apr 2014 15:13:55 +0000 (15:13 +0000)]
http: Fix spurious ERROR message in responses with no content

When a response has a content length of 0, fwrite would be called to write a
buffer with no data in it. This resulted in the following classic error

  [Apr  3 11:49:17] ERROR[26421] http.c: fwrite() failed: Success

This patch makes it so that we only attempt to write out the content if the
calculated content_length is non-zero.

Merged revisions 411687 from

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

9 years agores_pjsip_pubsub: Add test event for state change
Kinsey Moore [Thu, 3 Apr 2014 12:06:37 +0000 (12:06 +0000)]
res_pjsip_pubsub: Add test event for state change

This adds a test event when subscription state changes so that
integration tests may trigger new actions at the appropriate times.


Merged revisions 411670 from

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

9 years agores_hep: Fix crash when hep.conf not available
Matthew Jordan [Thu, 3 Apr 2014 11:47:03 +0000 (11:47 +0000)]
res_hep: Fix crash when hep.conf not available

Parts of res_hep properly checked for a valid configuration object before
attempting to access the configuration. A check, however, was missed when
a packet is sent. This patch fixes the crash caused by not checking if the
configuration object is valid.

Merged revisions 411668 from

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

9 years agoPrevent duplicate sorcery wizards from being applied to sorcery object types.
Mark Michelson [Wed, 2 Apr 2014 18:57:29 +0000 (18:57 +0000)]
Prevent duplicate sorcery wizards from being applied to sorcery object types.

This commit contains several changes to sorcery:

1) Application of sorcery configuration based on module name is automatically performed
when sorcery is opened for a module.
2) Sorcery will not attempt to apply the same wizard to an object type more than once.
3) Sorcery gives more exact results when attempting to apply a wizard, whether as the
default or based on configuration.

Sorcery unit tests still pass for me after making these changes.


Merged revisions 411159 from

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

9 years agores_parking: Minor tweaks.
Richard Mudgett [Tue, 1 Apr 2014 22:42:23 +0000 (22:42 +0000)]
res_parking: Minor tweaks.

* Use ast_bridge_channel_lock()/ast_bridge_channel_unlock() instead of
ao2_lock()/ao2_unlock() for struct ast_bridge_channel variables.

* Use ast_copy_string() instead of inlining it.

* Remove an already done TODO comment.

* Some whitespace tweaks.

Merged revisions 411638 from

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

9 years agostasis_channels.c: Eliminate another overuse of RAII_VAR().
Richard Mudgett [Tue, 1 Apr 2014 22:34:30 +0000 (22:34 +0000)]
stasis_channels.c: Eliminate another overuse of RAII_VAR().

Merged revisions 411636 from

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

9 years agoapp_queue: Fix a bug where realtime members would be deleted during reload causing...
Joshua Colp [Tue, 1 Apr 2014 16:52:12 +0000 (16:52 +0000)]
app_queue: Fix a bug where realtime members would be deleted during reload causing waiting callers to get ejected.

This patch causes realtime queue members to remain in queues during the reload process. Previously these
members would be removed causing any waiting callers to be ejected from the queue with a reason of "EXITEMPTY".

ASTERISK-23547 #close
ASTERISK-23547 #comment Patch app_queue_fix_realtime_reload_1.8_trunk.patch submitted by Italo Rossi (license 6409)


Merged revisions 411584 from

Merged revisions 411585 from

Merged revisions 411586 from

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

9 years agores_hep/res_hep_pjsip: Add a HEPv3 capture agent module and a logger for PJSIP
Matthew Jordan [Fri, 28 Mar 2014 18:32:50 +0000 (18:32 +0000)]
res_hep/res_hep_pjsip: Add a HEPv3 capture agent module and a logger for PJSIP

This patch adds the following:
(1) A new module, res_hep, which implements a generic packet capture agent for
the Homer Encapsulation Protocol (HEP) version 3. Note that this code is based
on a patch provided by Alexandr Dubovikov; I basically just wrapped it up,
added configuration via the configuration framework, and threw in a
(2) A new module, res_hep_pjsip, which forwards all SIP message traffic that
passes through the res_pjsip stack over to res_hep for encapsulation and
transmission to a HEPv3 capture server.

Much thanks to Alexandr for his Asterisk patch for this code and for a *lot*
of patience waiting for me to port it to 12/trunk. Due to some dithering on
my part, this has taken the better part of a year to port forward (I still
blame CDRs for the delay).

ASTERISK-23557 #close


Merged revisions 411534 from

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

9 years agoprocess stack command even if gatekeeper client isn't register
Alexandr Anikin [Fri, 28 Mar 2014 18:00:18 +0000 (18:00 +0000)]
process stack command even if gatekeeper client isn't register
don't destroy gatekeeper client if it is not started
don't destroy gatekeeper client in some sort of gatekeeper errors
signal rtp create condition when call cleared before rtp structure created

(closes issue ASTERISK-23460)

Reported by: Dmitry Melekhov

Tested by: Dmitry Melekhov

Merged revisions 411531 from

Merged revisions 411532 from

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

9 years agoUpdate API versions and UPGRADE/CHANGES for 12.2.0
Matthew Jordan [Fri, 28 Mar 2014 17:41:23 +0000 (17:41 +0000)]
Update API versions and UPGRADE/CHANGES for 12.2.0

This patch does the following:
 * It updates the AMI version to 2.2.0 to indicate backwards compatible
   changes have been made since the last release
 * It updates the ARI version to 1.2.0 to indicate backwards compatible
   changes have been made since the last release
 * It updates the UPGRADE/CHANGES files with changes that were not

Merged revisions 411529 from

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

9 years agores_config_odbc: Fix for nullable integer columns and keyfield existence check in...
Matthew Jordan [Fri, 28 Mar 2014 17:09:14 +0000 (17:09 +0000)]
res_config_odbc: Fix for nullable integer columns and keyfield existence check in update_odbc.

This patch fixes setting nullable integer columns to NULL instead of an empty
string, which fails for PostgreSQL, for example. The current code is supposed
to do so, but the check is broken. The patch also allows the first column in
the list to be a nullable integer.

Also, the check for existence of a mandatory column checked for the first
column in the list instead of the key field lookup column. This patch fixes
that issue as well.

Finally, the compatibility option allow_empty_string_in_nontext, which was
added to previous revisions to allow for some database backends with certain
schemas to function, has been removed.


ASTERISK-23459 #close
ASTERISK-23351 #close

(closes issue ASTERISK-23459)
Reported by: zvision
  res_config_odbc.diff uploaded by zvision (License 5755)

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

9 years agoBlocked revisions 411512
Matthew Jordan [Fri, 28 Mar 2014 16:49:09 +0000 (16:49 +0000)]
Blocked revisions 411512

res_config_odbc/res_odbc: Fix handling of non-text columns updates with empty values.

This patch fixes setting nullable integer columns to NULL instead of an empty
string, which fails for PostgreSQL, for example. The current code is supposed
to do so, but the check is broken. The patch also allows the first column in
the list to be a nullable integer.

This patch also adds a compatibility setting in res_odbc.conf,
allow_empty_string_in_nontext. It is enabled by default. It should be disabled
for database backends (such as PostgreSQL) that require NULL instead of an
empty string for Integer columns.


(issue ASTERISK-23459)
Reported by: zvision
  res_config_odbc.diff uploaded by zvision (License 5755)

Merged revisions 411399 from

Merged revisions 411408 from

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

9 years agohttp: response body often missing after specific request
Scott Griepentrog [Fri, 28 Mar 2014 16:18:56 +0000 (16:18 +0000)]
http: response body often missing after specific request

This patch works around a problem with the HTTP body
being dropped from the response to a specific client
and under specific circumstances:

a) Client request comes from node.js user agent
   "Shred" via use of swagger-client library.

b) Asterisk and Client are *not* on the same
   host or TCP/IP stack

In testing this problem, it has been determined that
the write of the HTTP body is lost, even if the data
is written using low level write function.  The only
solution found is to instruct the TCP stack with the
shutdown function to flush the last write and finish
the transmission.  See review for more details.

ASTERISK-23548 #close
(closes issue ASTERISK-23548)
Reported by: Sam Galarneau

Merged revisions 411462 from

Merged revisions 411463 from

Merged revisions 411465 from

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

9 years agoUPGRADE: Note IAX2 compatibility issue between 1.4 and 1.8+ systems.
Matthew Jordan [Fri, 28 Mar 2014 15:48:48 +0000 (15:48 +0000)]
UPGRADE: Note IAX2 compatibility issue between 1.4 and 1.8+ systems.

Merged revisions 411457 from

Merged revisions 411458 from

Merged revisions 411459 from

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

9 years agocontrib/realtime: Remove empty SQL script files
Matthew Jordan [Fri, 28 Mar 2014 14:19:20 +0000 (14:19 +0000)]
contrib/realtime: Remove empty SQL script files

Since the relatime scripts are now managed by Alembic, the previous realtime
scripts were previously removed. However, the removal process messed up, as
the files were still in the repository. The contents were just empty.

This removes the files from the tree.

Merged revisions 411442 from

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

9 years agochan_sip: Add MESSAGE request to allowed methods
Matthew Jordan [Fri, 28 Mar 2014 03:55:26 +0000 (03:55 +0000)]
chan_sip: Add MESSAGE request to allowed methods

The allowed methods advertised by chan_sip did not previously note the MESSAGE
request. Even in Asterisk 1.8, we do accept in-dialog MESSAGE requests; we
should advertise that we support MESSAGE requests.

ASTERISK-23504 #close
ASTERISK-23504 #comment Reported by: Martin Kontsek
ASTERISK-23504 #comment Patch sip.h_patch.diff uploaded by Martin Kontsek (license 6587)


Merged revisions 411372 from

Merged revisions 411373 from

Merged revisions 411374 from

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

9 years agoFix dialplan function NULL channel safety issues
Corey Farrell [Thu, 27 Mar 2014 19:21:44 +0000 (19:21 +0000)]
Fix dialplan function NULL channel safety issues

(closes issue ASTERISK-23391)
Reported by: Corey Farrell

Merged revisions 411313 from

Merged revisions 411314 from

Merged revisions 411315 from

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

9 years agomain/formats: Fix crash in ast_format_cmp during non-clean shutdown.
Corey Farrell [Thu, 27 Mar 2014 18:26:12 +0000 (18:26 +0000)]
main/formats: Fix crash in ast_format_cmp during non-clean shutdown.

* Update asterisk.h to reflect availability of ast_register_cleanup in 11.9.
* Use ast_register_cleanup for format_attr_shutdown.

(closes issue ASTERISK-23103)
Reported by: JoshE

Merged revisions 411310 from

Merged revisions 411311 from

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

9 years agoGive sorcery instances a reference to their wizards.
Mark Michelson [Thu, 27 Mar 2014 14:21:15 +0000 (14:21 +0000)]
Give sorcery instances a reference to their wizards.

On graceful shutdown, sorcery wizards are all killed off, but it is
possible for sorcery instances to still have dangling pointers after
this, possibly causing a crash. Giving the sorcery instances a reference
to their wizards ensures that the wizard reference will remain valid for
the lifetime of the sorcery instance.


Merged revisions 411295 from

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

9 years agosay: Fix a bug where SayNumber in Polish tries to play incorrect sound.
Joshua Colp [Wed, 26 Mar 2014 22:45:10 +0000 (22:45 +0000)]
say: Fix a bug where SayNumber in Polish tries to play incorrect sound.

This change fixes a bug where calling SayNumber with a number divisible by
100 using the Polish language would cause the code to attempt to play a
sound file with an empty name.

(closes issue ASTERISK-23509)
Reported by: zvision


Merged revisions 411243 from

Merged revisions 411244 from

Merged revisions 411245 from

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