9 years agoARI: Don't complain about missing ARI users when we aren't enabled
Sean Bright [Tue, 25 Mar 2014 18:44:57 +0000 (18:44 +0000)]
ARI: Don't complain about missing ARI users when we aren't enabled

Currently, if ARI is not enabled it will still complain that there are no
configured users.  This patch checks to see if ARI is enabled before logging and
error or iterating the container to validate the users.


Merged revisions 411173 from

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

9 years agoAdd a "message_context" option for PJSIP endpoints.
Mark Michelson [Tue, 25 Mar 2014 17:40:51 +0000 (17:40 +0000)]
Add a "message_context" option for PJSIP endpoints.

Merged revisions 411157 from

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

9 years agores_pjsip: Fix contact authenticate_qualify endpoint lookup when qualifing a contact.
Richard Mudgett [Tue, 25 Mar 2014 16:57:41 +0000 (16:57 +0000)]
res_pjsip: Fix contact authenticate_qualify endpoint lookup when qualifing a contact.

* Fixed bad use of ao2_find() in on_endpoint().

* Replaced use of find_endpoints() with find_an_endpoint() since only the
first found endpoint is ever needed.

* Fixed qualify_contact_cb() to update the contact with the aor
authenticate_qualify setting.  Otherwise, permanent contacts in the aor
type sections would have a config line order dependancy.

* Fixed off nominal path contact ref leak in qualify_contact().  The
comment saying the unref is not needed was wrong.

* Fixed off nominal path use of the endpoint parameter if it is NULL in

* Added missing off nominal path unref of pjsip tdata in

* Fixed off nominal path failing to call the callback in send_request_cb()
when the request is challenged for authentication.

* Eliminated silly RAII_VAR() use in qualify_contact_cb().

* Updated ast_sip_send_request() doxygen to better reflect reality.

(closes issue ASTERISK-23254)
Reported by: rmudgett


Merged revisions 411141 from

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

9 years agochan_sip: Fix incorrect use of timers
Kinsey Moore [Tue, 25 Mar 2014 16:06:57 +0000 (16:06 +0000)]
chan_sip: Fix incorrect use of timers

If update_provisional_keepalive() is called while
send_provisional_keepalive_full() is waiting on the PVT lock, then
pvt->provisional_keepalive_sched_id will be changed to a new sched_id
value by update_provisional_keepalive(), but that new sched_id then may
be overwritten with -1 by send_provisional_keepalive_full(), killing
the pvt's reference to a schedule and "leaking" the reference.

(closes issue ASTERISK-22079)
Reported by: Jamuel Starkey, Matteo, Leif Madsen, Steve Davies
    provisional_keepalive_fix.diff uploaded by Steve Davies (license 5012)

Merged revisions 411088 from

Merged revisions 411089 from

Merged revisions 411091 from

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

9 years agoARI: Resolve a subscription leak against implicit bridge subscriptions
Jonathan Rose [Tue, 25 Mar 2014 15:56:05 +0000 (15:56 +0000)]
ARI: Resolve a subscription leak against implicit bridge subscriptions

When a channel in a stasis application is joined to a bridge, a subscription
for that bridge is created implicitly for the stasis application serving the
channel. Prior to this patch, subsequent removals of the channel from the
bridge would leave the subscription open.


Merged revisions 411086 from

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

9 years agoRevert -r411073. It didn't help and blew up the system.
Richard Mudgett [Tue, 25 Mar 2014 15:47:17 +0000 (15:47 +0000)]
Revert -r411073.  It didn't help and blew up the system.

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

9 years agolocking: Add temporary sanity checks.
Richard Mudgett [Mon, 24 Mar 2014 23:36:36 +0000 (23:36 +0000)]
locking: Add temporary sanity checks.

Add some temporary sanity checks to hunt for locking problems with the
masquerade supertest.

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

9 years agochan_sip: Always use fromdomain if set for domain, even if callerid is set to restricted.
Joshua Colp [Mon, 24 Mar 2014 21:39:46 +0000 (21:39 +0000)]
chan_sip: Always use fromdomain if set for domain, even if callerid is set to restricted.

(closes issue ASTERISK-20841)
Reported by: Kelly Goedert

Merged revisions 411021 from

Merged revisions 411022 from

Merged revisions 411023 from

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

9 years agores_pjsip_registrar.c: Miscellaneous cleanup in rx_task().
Richard Mudgett [Fri, 21 Mar 2014 16:04:09 +0000 (16:04 +0000)]
res_pjsip_registrar.c: Miscellaneous cleanup in rx_task().

* Fix variable shadowing of 'updated' by renaming it to 'contact_update'.

* Checked 'contact_update' for ast_sorcery_copy() failure.

* Removed silly use of RAII_VAR() for 'contact_update'.

Merged revisions 410995 from

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

9 years agoMake the AEL load process less chatty.
Sean Bright [Fri, 21 Mar 2014 15:50:11 +0000 (15:50 +0000)]
Make the AEL load process less chatty.

Switched a bunch of LOG_NOTICEs to ast_debug.  This time without breaking the

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

9 years agoRevert r410981. aelparse blew up.
Sean Bright [Fri, 21 Mar 2014 15:30:37 +0000 (15:30 +0000)]
Revert r410981.  aelparse blew up.

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

9 years agoRemove a LOG_NOTICE from ast_config_engine_register.
Sean Bright [Fri, 21 Mar 2014 15:16:50 +0000 (15:16 +0000)]
Remove a LOG_NOTICE from ast_config_engine_register.

There is enough indication from the CLI that we are loading a realtime engine
as it is.

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

9 years agoMake the AEL load process less chatty.
Sean Bright [Fri, 21 Mar 2014 15:14:13 +0000 (15:14 +0000)]
Make the AEL load process less chatty.

Switched a bunch of LOG_NOTICEs to ast_debug.

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

9 years agoapp_confbridge: Fix bug - users with startmuted set don't start muted
Jonathan Rose [Thu, 20 Mar 2014 23:02:45 +0000 (23:02 +0000)]
app_confbridge: Fix bug - users with startmuted set don't start muted

(closes issue ASTERISK-23461)
Reported by: Chico Manobela

Merged revisions 410965 from

Merged revisions 410966 from

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

9 years agoassigned-uniqueids: Miscellaneous cleanup and fixes.
Richard Mudgett [Thu, 20 Mar 2014 16:35:57 +0000 (16:35 +0000)]
assigned-uniqueids: Miscellaneous cleanup and fixes.

* Fix memory leak in ast_unreal_new_channels().  Made it generate the ;2
uniqueid on a stack variable instead of mallocing it.

* Made send error response to ARI and AMI requests instead of just logging
excessive uniqueid length and allowing truncation.  action_originate() and

* Fixed minor truncating uniqueid hole when generating the ;2 uniqueid
string length.  Created public and internal lengths of uniqueid.  The
internal length can handle a max public uniqueid plus an appended ;2.

* free() and ast_free() are NULL tolerant so they don't need a NULL test
before calling.

* Made use better struct initialization format instead of the position
dependent initialization format.  Also anything not explicitly initialized
in the struct is initialized to zero by the compiler.

* Made ast_channel_internal_set_fake_ids() use the safer
ast_copy_string() instead of strncpy().


Merged revisions 410949 from

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

9 years agoPJSIP: Allow for identify sections to be specified in sorcery.conf.
Mark Michelson [Wed, 19 Mar 2014 17:27:57 +0000 (17:27 +0000)]
PJSIP: Allow for identify sections to be specified in sorcery.conf.

"identify" is a special type of configuration object in PJSIP because
unlike the other objects, it is not provided by the base res_pjsip module.
Instead, it is provided by the res_pjsip_endpoint_identifier_ip module. If
using the default sorcery wizard (config,criteria=type=identify) then things
work because the module that applies the default wizard is the correct module.

However, if attempting to use sorcery.conf to apply an alternate wizard, it
was not possible. If you attempted to specify the identify object type in the
res_pjsip section, then the object could not be registered since the object
was undocumented for the res_pjsip module. There was no alternate configuration
section defined for it, so you were out of luck if you wanted to override the
default wizard.

With this change, the identify section will properly have a sorcery.conf-based
wizard applied when the identify definition is within the res_pjsip_endpoint_identifier_ip

Merged revisions 410933 from

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

9 years agores_stasis: Fix a bug where the default bridge type was not set.
Joshua Colp [Wed, 19 Mar 2014 14:25:31 +0000 (14:25 +0000)]
res_stasis: Fix a bug where the default bridge type was not set.

Merged revisions 410918 from

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

9 years agores_stasis: Extend bridge type to be a comma separated list of bridge attributes.
Joshua Colp [Wed, 19 Mar 2014 12:54:25 +0000 (12:54 +0000)]
res_stasis: Extend bridge type to be a comma separated list of bridge attributes.

This change turns the bridge type field into a comma separated list of attributes.
These attributes include: mixing, holding, dtmf_events, and proxy_media. By setting
the various attributes a user can control the type of bridge created with the
behavior they need for their application.

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


Merged revisions 410904 from

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

9 years agores_ari: Fix documentation schema error
Matthew Jordan [Wed, 19 Mar 2014 02:33:55 +0000 (02:33 +0000)]
res_ari: Fix documentation schema error

Merged revisions 410890 from

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

9 years agores_ari: Add notes about Asterisk HTTP server to the "enabled" config option for...
Rusty Newton [Tue, 18 Mar 2014 23:32:00 +0000 (23:32 +0000)]
res_ari: Add notes about Asterisk HTTP server to the "enabled" config option for the res_ari general section

Added note and see-also reminding user to enable the HTTP server.

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

Merged revisions 410876 from

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

9 years agoARI: allow json content type with zero length body
Scott Griepentrog [Tue, 18 Mar 2014 15:45:04 +0000 (15:45 +0000)]
ARI: allow json content type with zero length body

When a request was received with a Content-type of json,
the body was sent for json parsing - even if it was zero
length.  This resulted in ARI requests failing that were
valid, such as a channel DELETE with no parameters.  The
code has now been changed to skip json parsing with zero
content length.

(closes issue SWP-6748)
Reported by: Samuel Galarneau

Merged revisions 410858 from

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

9 years agocdr: Add asserts for when we don't know about a CDR for a channel
Matthew Jordan [Tue, 18 Mar 2014 15:28:45 +0000 (15:28 +0000)]
cdr: Add asserts for when we don't know about a CDR for a channel

In the CDR core, every channel should either be filtered out (due to being an
'internal' channel used as an implementation detail, such as playing media
back into a bridge) or it should get a CDR. Even if that CDR ends up being
discarded, we still give the channel a CDR in case we end up needing it. If we
hit a situation where a channel does not have a CDR, we should blow up in
-dev-mode. Asserts are appropriate for that.

This patch adds those asserts, as they would have quickly caught the error
fixed by r410814.

Merged revisions 410861 from

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

9 years agores_pjsip: Fix memory leak of nameservers in off-nominal resolver creation failure.
Joshua Colp [Tue, 18 Mar 2014 12:45:49 +0000 (12:45 +0000)]
res_pjsip: Fix memory leak of nameservers in off-nominal resolver creation failure.

Thanks Walter Doekes!

Merged revisions 410844 from

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

9 years agores_fax_spandsp: Use g711_free() when available.
Sean Bright [Tue, 18 Mar 2014 11:52:15 +0000 (11:52 +0000)]
res_fax_spandsp: Use g711_free() when available.

Per Johann Steinwendtner on the asterisk-dev mailing list:

g711_free() was introduced in spandsp 0.0.6pre4 and g711_release() became a
noop.  I opted not to remove the call to g711_release() since it is harmless
and to call g711_free() if we have a sufficiently recent version of spandsp.

(issue ASTERISK-20149)
Reported by: Alexandr Gordeev

Merged revisions 410829 from

Merged revisions 410830 from

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

9 years agostasis_cache: Use the right variable in the cache entry ao2 cmp function.
Richard Mudgett [Tue, 18 Mar 2014 02:09:25 +0000 (02:09 +0000)]
stasis_cache: Use the right variable in the cache entry ao2 cmp function.

Merged revisions 410813 from

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

9 years agores_pjsip: Enable PJSIP DNS client support.
Joshua Colp [Mon, 17 Mar 2014 22:54:32 +0000 (22:54 +0000)]
res_pjsip: Enable PJSIP DNS client support.

This change enables DNS client support within PJSIP. System
nameservers are automatically discovered using res_init or
res_ninit. If this fails then PJSIP will resort to using
gethostbyname for resolution.

By enabling this support we gain SRV support, failover, and
weight support.

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


Merged revisions 410795 from

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

9 years agores_pjsip_multihomed: Make address replacement less aggressive.
Joshua Colp [Mon, 17 Mar 2014 22:46:56 +0000 (22:46 +0000)]
res_pjsip_multihomed: Make address replacement less aggressive.

This change makes the res_pjsip_multihomed module less aggressive when
changing the address in messages. It will now only occur if the transport
in use is bound to the any address OR if the system determined source
address matches the bound address of the transport in use.


Merged revisions 410793 from

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

9 years agocallerid: Logic error in checksum processing
Russ Meyerriecks [Mon, 17 Mar 2014 22:24:03 +0000 (22:24 +0000)]
callerid: Logic error in checksum processing

Callerid checksum-ing was being handled incorrectly here. When the checksum is
calculated to be 0x00, it will perform 0x100-0x00 which results in 0x100. This
value will then fail the otherwise correct callerid message.

This patch changes the logic to simply add the calculated checksum to the
transmitted 2's compliment checksum.

(closes issue ASTERISK-23488)

This is a merge of merged revisions 410750 410747 from
I didn't want a broken patch to be comitted to trunk so I pre-merge merged them.

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

9 years agoRevert changes to sorcery that accidentally got committed.
Mark Michelson [Mon, 17 Mar 2014 19:35:17 +0000 (19:35 +0000)]
Revert changes to sorcery that accidentally got committed.

These changes were still up for review and have not been approved
yet. I must have had the changes in my working copy when making
a different change.

Merged revisions 410696 from

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

9 years agoFix stuck channel in ARI through the introduction of synchronous bridge actions.
Mark Michelson [Mon, 17 Mar 2014 17:22:12 +0000 (17:22 +0000)]
Fix stuck channel in ARI through the introduction of synchronous bridge actions.

Playing back a file to a channel in an ARI bridge would attempt to wait until
the playback concluded before returning. The method used involved signaling the
waiting thread in the ARI custom playback function.

The problem with this is that there were some corner cases that were not accounted for:
* If a bridge channel could not be found, then we never would attempt the playback but
  would still attempt to wait for the playback to complete.
* If the bridge playfile action failed to queue, we would still attempt to wait for the
  playback to complete.
* If the bridge playfile action were queued but some circumstance caused the playback
  not to occur (the bridge dies, the channel is removed from the bridge), then we would
  never be notified.

The solution to this is to move the waiting logic into the bridge code. A new bridge
API function is added to queue a synchronous action on a bridge. The waiting thread
is notified when the queued frame has been freed, either due to an error occurring
or due to successful playback. As a failsafe, the waiting thread has a 10 minute
timeout just in case there is a frame leak somewhere.


Merged revisions 410673 from

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

9 years agoapp_confbridge: Add missing destructor call to announcer channel destructor.
Richard Mudgett [Mon, 17 Mar 2014 16:48:55 +0000 (16:48 +0000)]
app_confbridge: Add missing destructor call to announcer channel destructor.

Merged revisions 410671 from

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

9 years agostasis/app.c: Add some extra debugging for subscription counts
Matthew Jordan [Sun, 16 Mar 2014 20:27:28 +0000 (20:27 +0000)]
stasis/app.c: Add some extra debugging for subscription counts

Events are sent to a connected ARI application based on the things that ARI
application cares about. These subscriptions can be set up implicitly - such
as when that ARI application creates a new object - or explicitly, via the
application resource's subscription operations. Debugging *why* something was
being sent to an application - or why something was not being sent to an
application - was a bit tricky, as there was no debug information for the

This patch adds some debug level 3 statements that show the subscription counts
for applications. (Level 3 was chosen as it matches the verbose level 3
statements elsewhere)

Merged revisions 410650 from

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

9 years agoframehook.h: Fix some doc typos.
Russell Bryant [Sat, 15 Mar 2014 15:24:23 +0000 (15:24 +0000)]
framehook.h: Fix some doc typos.

There were a number of instances in this header file where "function all" was
intended to be "function call".  This patch fixes that up.

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

9 years agoFix failing realtime sorcery tests.
Mark Michelson [Fri, 14 Mar 2014 21:56:21 +0000 (21:56 +0000)]
Fix failing realtime sorcery tests.

The store realtime callback needs to return a positive value for
sorcery to treat the store as a success.

Merged revisions 410625 from

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

9 years agomanager: fix memory leak in manager_add_filter function
Jonathan Rose [Fri, 14 Mar 2014 21:36:55 +0000 (21:36 +0000)]
manager: fix memory leak in manager_add_filter function

(closes issue ASTERISK-23420)
Reported by: Etienne Lessard
    manager_eventfilter_leak uploaded by Etienne Lessard (license 6394)

Merged revisions 410609 from

Merged revisions 410623 from

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

9 years agoRemove an extra ast_cond_wait() that slipped through the patch.
Mark Michelson [Fri, 14 Mar 2014 20:55:06 +0000 (20:55 +0000)]
Remove an extra ast_cond_wait() that slipped through the patch.

Merged revisions 410606 from

Merged revisions 410607 from

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

9 years agoHandle the return values of realtime updates and stores more accurately.
Mark Michelson [Fri, 14 Mar 2014 18:11:55 +0000 (18:11 +0000)]
Handle the return values of realtime updates and stores more accurately.

Realtime backends' update and store callbacks return the number of rows affected,
or -1 if there was a failure. There were a couple of issues:

* The config API was treating 0 as a successful return, and positive values as
  a failure. Now the config API treats anything >= 0 as a success.

* res_sorcery_realtime was treating 0 as a successful return from the store
  procedure, and any positive values as a failure. Now sorcery treats anything
  > 0 as a success. It still considers 0 a "failure" since there is no change
  to report to observers.


Merged revisions 410592 from

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

9 years agoPrevent conflicts regarding unsolicited and solicited MWI to an endpoint.
Mark Michelson [Fri, 14 Mar 2014 18:05:04 +0000 (18:05 +0000)]
Prevent conflicts regarding unsolicited and solicited MWI to an endpoint.

If an endpoint is receiving unsolicited MWI for a mailbox and then attempts
to subscribe to an AOR that provides MWI for the same mailbox, then the SUBSCRIBE
is rejected with a 500 response.


Merged revisions 410590 from

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

9 years agouniqueid: Update CHANGES to reflect new features
Scott Griepentrog [Fri, 14 Mar 2014 17:56:53 +0000 (17:56 +0000)]
uniqueid: Update CHANGES to reflect new features

Note the new features provided by uniqueid in the

(issue ASTERISK-23120)

Merged revisions 410588 from

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

9 years agoPJSIP: TOS values should be represented as decimals in sorcery objects
Jonathan Rose [Fri, 14 Mar 2014 16:42:54 +0000 (16:42 +0000)]
PJSIP: TOS values should be represented as decimals in sorcery objects

(closes issue ASTERISK-23235)
Reported by: George Joseph

Merged revisions 410574 from

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

9 years agoPrevent delayed astdb syncs.
Mark Michelson [Fri, 14 Mar 2014 16:19:21 +0000 (16:19 +0000)]
Prevent delayed astdb syncs.

The syncing thread sleeps for a second before waiting to be
told to attempt to sync again. If a signal were sent during this
sleeping period, we would end up having to wait until the next
sync signal occurred in order to sync up the astdb.

This code rearrangement also ensures that any pending transactions
will be synced prior to Asterisk shutting down.

Patches: db_sync.patch by John Hardin (License #6512)

Merged revisions 410556 from

Merged revisions 410559 from

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

9 years agoARI/bridges: Forward Playback/Recording Started/Finished to bridge topic
Jonathan Rose [Fri, 14 Mar 2014 16:17:26 +0000 (16:17 +0000)]
ARI/bridges: Forward Playback/Recording Started/Finished to bridge topic

(closes issue ASTERISK-23444)
Reported by: Ben Merrills

Merged revisions 410558 from

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

9 years agores_mwi_external: Clear the stasis cache entry when the external MWI is deleted.
Richard Mudgett [Fri, 14 Mar 2014 16:01:13 +0000 (16:01 +0000)]
res_mwi_external: Clear the stasis cache entry when the external MWI is deleted.

One of the things missing when external MWI support was added was the
ability to clear the stasis cache entry of deleted external MWI mailboxes.


Merged revisions 410555 from

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

9 years agocdr.c: Add missing aow_unlock(cdr) in off nominal path of handle_dial_message().
Richard Mudgett [Thu, 13 Mar 2014 21:27:15 +0000 (21:27 +0000)]
cdr.c: Add missing aow_unlock(cdr) in off nominal path of handle_dial_message().

* Trivial common code hoisting in handle_bridge_leave_message().

* Some whitespace fixing.

Merged revisions 410541 from

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

9 years agoARI: Ensure managing application receives ChannelEnteredBridge messages
Kinsey Moore [Thu, 13 Mar 2014 19:33:22 +0000 (19:33 +0000)]
ARI: Ensure managing application receives ChannelEnteredBridge messages

This fixes an issue where a Stasis application running over ARI and
subscribed to ari/events could miss the ChannelEnteredBridge event
because it did not subscribe to the new bridge fast enough.

To accomplish this, it subscribes the application controlling the
channel to the new bridge before adding it to that bridge which
required the stasis_app_control structure to maintain a reference to
the stasis_app.

(closes issue ASTERISK-23295)

Merged revisions 410527 from

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

9 years agoMultiple revisions 410509-410510
Joshua Colp [Thu, 13 Mar 2014 13:25:09 +0000 (13:25 +0000)]
Multiple revisions 410509-410510

  r410509 | file | 2014-03-13 06:23:14 -0700 (Thu, 13 Mar 2014) | 2 lines

  res_pjsip_multihomed: Fix a bug where the 200 OK for a REGISTER would contain the wrong contact.
  r410510 | file | 2014-03-13 06:24:17 -0700 (Thu, 13 Mar 2014) | 2 lines

  res_pjsip_multihomed: Remove change for testing fix.

Merged revisions 410509-410510 from

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

9 years agores_musiconhold.c: Generate MOH start/stop events whenever the MOH stream is started...
Richard Mudgett [Wed, 12 Mar 2014 19:06:52 +0000 (19:06 +0000)]
res_musiconhold.c: Generate MOH start/stop events whenever the MOH stream is started/stopped.

* Made res_musiconhold.c always post the MusicOnHoldStart/MusicOnHoldStop
events when it actually starts/stops the music streams.  This allows the
events to always happen when MOH starts/stops.  The event posting code was
moved to the MOH alloc/release routines.

* Made channel_do_masquerade() stop any MOH on the original channel before
masquerading so the original channel will get a stop event with correct

* Cleaned up a couple odd codings in moh_files_alloc() and moh_alloc()
dealing with the music state variable.

(issue ASTERISK-23311)
Reported by: Benjamin Keith Ford


Merged revisions 410493 from

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

9 years agoapp_confbridge: Make explicitly stop MOH if a user is kicked or hangs up while MOH...
Richard Mudgett [Wed, 12 Mar 2014 18:47:10 +0000 (18:47 +0000)]
app_confbridge: Make explicitly stop MOH if a user is kicked or hangs up while MOH is playing.

When MOH is playing to a user in a conference and the user is kicked or
hangs up from the conference then the AMI MusicOnHoldStop events didn't
happen.  (Asterisk v11 AMI event: MusicOnHold, state:Stop)

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


Merged revisions 410490 from

Merged revisions 410491 from

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

9 years agores_pjsip_multihomed: Fix a bug where outgoing messages for TCP would go out using...
Joshua Colp [Wed, 12 Mar 2014 12:51:34 +0000 (12:51 +0000)]
res_pjsip_multihomed: Fix a bug where outgoing messages for TCP would go out using UDP.

This change fixes a bug where the code which changes the transport did not check whether
the message is going out over UDP or not before changing it. For TCP and TLS transports
we don't need to change the transport as the correct one is already chosen.

Merged revisions 410471 from

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

9 years agores_pjsip_multihomed: Add module which places the correct address within messages.
Joshua Colp [Tue, 11 Mar 2014 16:07:42 +0000 (16:07 +0000)]
res_pjsip_multihomed: Add module which places the correct address within messages.

Due to how messages are handled within PJSIP it is not until a message is actually
sent that the destination is reliably known. This means that the addresses placed
within the message may not be of the interface the message is being sent out on.

This module determines what interface a message is being sent on and updates the
message to contain the correct address if applicable.

This module was tested by myself in a virtualized environment with multiple interfaces
and also by Kinsey Moore in the following configuration:

** hard phone
** default gateway
** softphone with pjsip-based stack

Transport details:
bind address:
protocol: UDP

All endpoints were tested with explicitly configured transports and unconfigured transports.

This was tested with inbound and outbound calls, both of which were experiencing detrimental
effects from incorrect IP addresses in SIP messages. These effects were only experienced by the
soft phone on the network since the messages to the hard phone on the
network had the correct IP address.

(closes issue ASTERISK-23020)
Reported by: xrobau


Merged revisions 410451 from

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

9 years agoAST-2014-001: Stack overflow in HTTP processing of Cookie headers.
Richard Mudgett [Mon, 10 Mar 2014 17:21:01 +0000 (17:21 +0000)]
AST-2014-001: Stack overflow in HTTP processing of Cookie headers.

Sending a HTTP request that is handled by Asterisk with a large number of
Cookie headers could overflow the stack.

Another vulnerability along similar lines is any HTTP request with a
ridiculous number of headers in the request could exhaust system memory.

(closes issue ASTERISK-23340)
Reported by: Lucas Molas, researcher at Programa STIC, Fundacion; and Dr. Manuel Sadosky, Buenos Aires, Argentina

Merged revisions 410380 from

Merged revisions 410381 from

Merged revisions 410383 from

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

9 years agounqiueid: correct max uniqueid length test
Scott Griepentrog [Mon, 10 Mar 2014 16:33:10 +0000 (16:33 +0000)]
unqiueid: correct max uniqueid length test

This patch adds null string test prior to checking for
a max uniqueid value that was added in r410157.

Merged revisions 410368 from

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

9 years agoAST-2014-002: chan_sip: Exit early on bad session timers request
Kinsey Moore [Mon, 10 Mar 2014 13:30:51 +0000 (13:30 +0000)]
AST-2014-002: chan_sip: Exit early on bad session timers request

This change allows chan_sip to avoid creation of the channel and
consumption of associated file descriptors altogether if the inbound
request is going to be rejected anyway.

(closes issue ASTERISK-23373)
Reported by: Corey Farrell
     chan_sip-earlier-st-1.8.patch uploaded by Corey Farrell (license 5909)
     chan_sip-earlier-st-11.patch uploaded by Corey Farrell (license 5909)

Merged revisions 410308 from

Merged revisions 410311 from

Merged revisions 410329 from

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

9 years agoAST-2014-003: res_pjsip: When handling 401/407 responses don't assume a request will...
Joshua Colp [Mon, 10 Mar 2014 12:53:00 +0000 (12:53 +0000)]
AST-2014-003: res_pjsip: When handling 401/407 responses don't assume a request will have an endpoint.

This change removes the assumption that an outgoing request will always
have an endpoint and makes the authenticate_qualify option work once again.

(closes issue ASTERISK-23210)
Reported by: Joshua Colp

Merged revisions 410306 from

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

9 years agopjsip_cli: Create pjsip show channel and contact, and general cli code cleanup.
George Joseph [Sat, 8 Mar 2014 16:50:36 +0000 (16:50 +0000)]
pjsip_cli: Create pjsip show channel and contact, and general cli code cleanup.

Created the 'pjsip show channel' and 'pjsip show contact' commands.
Refactored out the hated ast_hashtab.  Replaced with ao2_container.
Cleaned up function naming.  Internal only, no public name changes.
Cleaned up whitespace and brace formatting in cli code.
Changed some NULL checking from "if"s to ast_asserts.
Fixed some register/unregister ordering to reduce deadlock potential.
Fixed ast_sip_location_add_contact where the 'name' buffer was too short.
Fixed some self-assignment issues in res_pjsip_outbound_registration.

(closes issue ASTERISK-23276)

Merged revisions 410287 from

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

9 years agoresource_channels: Check if a passed in ID is NULL before checking its length
Matthew Jordan [Sat, 8 Mar 2014 15:45:59 +0000 (15:45 +0000)]
resource_channels: Check if a passed in ID is NULL before checking its length

Calling strlen on a NULL string is explosive. This patch checks whether or not
the passed in string is NULL or zero length before checking to see if the
string is too long.

Merged revisions 410274 from

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

9 years agochan_sip: Fix deadlock of monlock between unload_module and do_monitor
Corey Farrell [Fri, 7 Mar 2014 22:56:15 +0000 (22:56 +0000)]
chan_sip: Fix deadlock of monlock between unload_module and do_monitor

Release monlock before calling pthread_join.  This ensures do_monitor
cannot freeze by locking monlock during module unload.

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

Merged revisions 410224 from

Merged revisions 410225 from

Merged revisions 410226 from

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

9 years agosorcery: correct field register argument list
Scott Griepentrog [Fri, 7 Mar 2014 22:08:26 +0000 (22:08 +0000)]
sorcery: correct field register argument list

This fixes mistakes I previously made in merging
gtjoseph's changes with mine.

Merged revisions 410211 from

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

9 years agoconfig_options: Display the see-also information for CLI config option help
Matthew Jordan [Fri, 7 Mar 2014 21:54:01 +0000 (21:54 +0000)]
config_options: Display the see-also information for CLI config option help

The config option help information has always parsed the <see-also> tags in the
XML documentation. Unfortunately, it just never bothered displaying them on
the CLI. With this patch, when you execute 'config show help [module] [obj]
[option]', it will display what other options are useful to you.

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

Merged revisions 410209 from

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

9 years agores_pjsip: Fix documentation for one touch recording see-also links
Matthew Jordan [Fri, 7 Mar 2014 21:28:12 +0000 (21:28 +0000)]
res_pjsip: Fix documentation for one touch recording see-also links

The one touch recording options have several see-also links between the
various configuration options. These were 'broken' by the snake casing
of those options. This patch corrects the see-also links such that they
reference the correct option names.

Merged revisions 410194 from

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

9 years agoMake res_sorcery_realtime filter unknown retrieved results.
Mark Michelson [Fri, 7 Mar 2014 21:23:39 +0000 (21:23 +0000)]
Make res_sorcery_realtime filter unknown retrieved results.

When retrieving data from a database or other realtime backend, it's quite
possible to retrieve variables that Asterisk does not care about but that
are legitimate to exist. Asterisk does not need to throw a hissy fit when
these variables are encountered but rather just filter them out.


Merged revisions 410187 from

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

9 years agopjsip: allow and disallow show same codecs
Scott Griepentrog [Fri, 7 Mar 2014 21:11:49 +0000 (21:11 +0000)]
pjsip: allow and disallow show same codecs

In order to prevent confusion over the allow and disallow
list of codecs being the same an option for registering a
field as an alias is added.  The alias field will be read
from the configuration file, but afterwards is not listed
as a known field.  With disallow set as an alias, the CLI
command pjsip show endpoint # will list the allow= field,
but not the disallow field.

(closes issue ASTERISK-23092)

Merged revisions 410190 from

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

9 years agostasis cache: Enhance to keep track of an item from different entities.
Richard Mudgett [Fri, 7 Mar 2014 20:41:13 +0000 (20:41 +0000)]
stasis cache: Enhance to keep track of an item from different entities.

A stasis cache entry now contains more than a single message/snapshot.  It
contains messages/snapshots for the local entity as well as any remote
entities that post to the cached item.  In addition callbacks can be
supplied when the cache is created to compute and post the aggregate
message/snapshot representing all entities stored in the cache entry.

* All stasis messages now have an eid to indicate what entity posted it.

* The stasis cache enhancements allow device state to cache and aggregate
the device states from local and remote entities in a single operation.
The cached aggregate device state is available immediately after it is
posted to the stasis bus.  This improves performance by eliminating a
cache dump and associated ao2 container traversals to calculate the
aggregate state.

(closes issue ASTERISK-23204)
Reported by: Mark Michelson


Merged revisions 410184 from

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

9 years agouniqueid: Fix chan_dahdi, sig_pri, sig_ss7, test_cdr, and test_cel compiler errors.
Richard Mudgett [Fri, 7 Mar 2014 19:19:04 +0000 (19:19 +0000)]
uniqueid: Fix chan_dahdi, sig_pri, sig_ss7, test_cdr, and test_cel compiler errors.

(issue ASTERISK-23120)

Merged revisions 410171 from

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

9 years agouniqueid: channel linkedid, ami, ari object creation with id's
Scott Griepentrog [Fri, 7 Mar 2014 15:47:55 +0000 (15:47 +0000)]
uniqueid: channel linkedid, ami, ari object creation with id's

Much needed was a way to assign id to objects on creation, and
much change was necessary to accomplish it.  Channel uniqueids
and linkedids are split into separate string and creation time
components without breaking linkedid propgation.  This allowed
the uniqueid to be specified by the user interface - and those
values are now carried through to channel creation, adding the
assignedids value to every function in the chain including the
channel drivers. For local channels, the second channel can be
specified or left to default to a ;2 suffix of first.  In ARI,
bridge, playback, and snoop objects can also be created with a
specified uniqueid.

Along the way, the args order to allocating channels was fixed
in chan_mgcp and chan_gtalk, and linkedid is no longer lost as
masquerade occurs.

(closes issue ASTERISK-23120)

Merged revisions 410157 from

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

9 years agochan_sip: Allow static realtime members to be qualified during module load.
Matthew Jordan [Fri, 7 Mar 2014 05:04:32 +0000 (05:04 +0000)]
chan_sip: Allow static realtime members to be qualified during module load.

When a static realtime peer with qualify=yes is loaded, Asterisk will fail to
send an OPTIONS request due to the lastms being equal to 0. This results in
the peer being unable to receive calls from Asterisk because the status is
permanently UNKNOWN.

This patch allows an OPTIONS request to be sent during module load by
ignoring the lastms value on startup only.


(closes issue ASTERISK-17523)
Reported by: Maciej Krajewski
Tested by: wushumasters
  realtime_fix_11.7.0.txt uploaded by Trevor Peirce (license 6112)

Merged revisions 410105 from

Merged revisions 410106 from

Merged revisions 410107 from

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

9 years agosorcery.c: Fix off-nominal path ref and memory leak in ast_sorcery_objectset_json_cre...
Richard Mudgett [Thu, 6 Mar 2014 23:47:16 +0000 (23:47 +0000)]
sorcery.c: Fix off-nominal path ref and memory leak in ast_sorcery_objectset_json_create().

* Made exit a loop early on error in ast_sorcery_objectset_json_create().

* Removed some dead code in ast_sorcery_objectset_create2().

Merged revisions 410089 from

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

9 years agomoh: fix a refcount error with realtime MOH
Russell Bryant [Thu, 6 Mar 2014 23:43:34 +0000 (23:43 +0000)]
moh: fix a refcount error with realtime MOH

I observed a crash in res_musiconhold on an Asterisk 11 system using realtime
MOH.  Investigation of the backtrace showed a corrupt mohclass, implying that
it got destroyed before the code expected it to.  I went looking for reference
counting errors that could have caused this crash and this patch this result.
It contains 2 changes.

1) Remove a usless block of code that was impossible to reach.  There was even
a comment indicating that it was impossible to reach.  The conditional includes
"!ast_test_flag(global_flags, MOH_CACHERTCLASSES)" and it's inside of an if
block with the opposite check "ast_test_flag(global_flags,
MOH_CACHERTCLASSES)".  There's no good reason to keep it around.

2) A similar block to #1 contained a reference counting error.  It stores
state->class in the local variable mohclass without increasing its reference
count.  The reference count on mohclass is decremented at the end of the
function.  This block of code probably very rarely runs, which would help
explain why this system was working fine for many months before experiencing a


Merged revisions 410043 from

Merged revisions 410044 from

Merged revisions 410090 from

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

9 years agosorcery: Create AST_SORCERY dialplan function.
George Joseph [Thu, 6 Mar 2014 22:39:54 +0000 (22:39 +0000)]
sorcery: Create AST_SORCERY dialplan function.

This patch creates the AST_SORCERY dialplan function which allows someone to
retrieve any value from a sorcery-based config file.  It's similar to

The creation of the function itself was fairly straightforward but it required
changes to the underlying sorcery infrastructure that rippled into individual
sorcery objects.  The changes stemmed from inconsistencies in how sorcery
created ast_variable objectsets from sorcery objects and the inconsistency
in how individual objects used that feature especially when it came to
parameters that can be specified multiple times like contact in aor and match
in identify.  You can read more here...

So, what this patch does, besides actually creating the AST_SORCERY function,
is the following...

* Creates ast_variable_list_append which is a helper to append one ast_variable
  list to another.
* Modifies the ast_sorcery_object_field_register functions to accept the
  already-defined sorcery_fields_handler callback.
* Modifies ast_sorcery_objectset_create to accept a parameter indicating return
  type preference...a single ast_variable with all values concatenated or an
  ast_variable list with multiple entries.  Also fixed a few bugs.
* Modifies individual sorcery object implementations to use the new function
  definition of the ast_sorcery_object_field_register functions.
* Modifies location.c and res_pjsip_endpoint_identifier_ip.c to implement
  sorcery_fields_handler handlers so they return multiple occurrences as an
* Added a whole bunch of tests to test_sorcery.

(closes issue ASTERISK-22537)

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

9 years agopjsip configuration: Make transport TOS values consistent with endpoints
Jonathan Rose [Thu, 6 Mar 2014 19:04:58 +0000 (19:04 +0000)]
pjsip configuration: Make transport TOS values consistent with endpoints

Transport TOS values were interpreted as DSCP values without being documented
as such. Endpoint TOS values (tos_audio/tos_video) behaved normally as TOS
values have historically. This patch makes the transport TOS values behave as
TOS values and makes all TOS values readable as string values (e.g. AF11).
In addition, alembic scripts have been updated to use the proper field types
for all TOS/COS values.

(issue ASTERISK-23235)
Reported by: George Joseph

Merged revisions 410028 from

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

9 years agores_stasis_recording: Add a "target_uri" field to recording events.
Joshua Colp [Thu, 6 Mar 2014 18:20:37 +0000 (18:20 +0000)]
res_stasis_recording: Add a "target_uri" field to recording events.

This change adds a target_uri field to the live recording object. It
contains the URI of what is being recorded.

(closes issue ASTERISK-23258)
Reported by: Ben Merrills


Merged revisions 410025 from

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

9 years agoDon't attempt to link in an aggregate MWI subscription if an endpoint does not aggreg...
Mark Michelson [Thu, 6 Mar 2014 15:58:13 +0000 (15:58 +0000)]
Don't attempt to link in an aggregate MWI subscription if an endpoint does not aggregate MWI.

Attempting to link a NULL object into an ao2 container had been benign previously, but since
enabling DO_CRASH in the testsuite, this is now causing a crash. It's better to be right
here anyway.

Merged revisions 410011 from

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

9 years agoBlocked revisions 410006
George Joseph [Thu, 6 Mar 2014 15:20:51 +0000 (15:20 +0000)]
Blocked revisions 410006

sorcery: Create AST_SORCERY dialplan function.

This patch creates the AST_SORCERY dialplan function which allows someone to
retrieve any value from a sorcery-based config file.  It's similar to

The creation of the function itself was fairly straightforward but it required
changes to the underlying sorcery infrastructure that rippled into individual
sorcery objects.  The changes stemmed from inconsistencies in how sorcery
created ast_variable objectsets from sorcery objects and the inconsistency
in how individual objects used that feature especially when it came to
parameters that can be specified multiple times like contact in aor and match
in identify.  You can read more here...

So, what this patch does, besides actually creating the AST_SORCERY function,
is the following...

* Creates ast_variable_list_append which is a helper to append one ast_variable
  list to another.
* Modifies the ast_sorcery_object_field_register functions to accept the
  already-defined sorcery_fields_handler callback.
* Modifies ast_sorcery_objectset_create to accept a parameter indicating return
  type preference...a single ast_variable with all values concatenated or an
  ast_variable list with multiple entries.  Also fixed a few bugs.
* Modifies individual sorcery object implementations to use the new function
  definition of the ast_sorcery_object_field_register functions.
* Modifies location.c and res_pjsip_endpoint_identifier_ip.c to implement
  sorcery_fields_handler handlers so they return multiple occurrences as an
* Added a whole bunch of tests to test_sorcery.

(closes issue ASTERISK-22537)

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

9 years agores_fax_spandsp: Fix crash when passing ulaw/alaw data to spandsp
Matthew Jordan [Thu, 6 Mar 2014 02:22:59 +0000 (02:22 +0000)]
res_fax_spandsp: Fix crash when passing ulaw/alaw data to spandsp

When acting as a T.38 fax gateway, res_fax_spandsp would at times cause a crash
in libspandsp. This would occur when, during fax tone detection, a ulaw/alaw
frame would be passed to modem_connect_tones_rx. That particular routine
expects the data to be in slin format. This patch looks at the frame type and,
if the data is ulaw/alaw, converts the format to slin before passing it to


(closes issue ASTERISK-20149)
Reported by: Alexandr Gordeev
Tested by: Michal Rybarik
  spandsp_g711decode.diff uploaded by Michal Rybarik (license 6578)

Merged revisions 409990 from

Merged revisions 409991 from

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

9 years agoapp_confbridge: Remove some noop code.
Richard Mudgett [Thu, 6 Mar 2014 00:33:13 +0000 (00:33 +0000)]
app_confbridge: Remove some noop code.

Merged revisions 409976 from

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

9 years agores_musiconhold.c: Remove some unnecessary RAII_VAR() usage.
Richard Mudgett [Thu, 6 Mar 2014 00:19:06 +0000 (00:19 +0000)]
res_musiconhold.c: Remove some unnecessary RAII_VAR() usage.

* Made the moh_register() define use useful parameter names.

Merged revisions 409967 from

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

9 years agoconfig: Fix inverted test
Kinsey Moore [Wed, 5 Mar 2014 20:41:37 +0000 (20:41 +0000)]
config: Fix inverted test

The test of the result of the stat() call was inverted such that its
output was only used if the call failed. This inverts the test so that
the output of stat() is used correctly. This was causing full reloads
on unchanged files.

(closes issue ASTERISK-23383)
Reported by: David Woolley

Merged revisions 409916 from

Merged revisions 409917 from

Merged revisions 409918 from

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

9 years agobridge_native_rtp: Fix crash involving masquerade
Kinsey Moore [Wed, 5 Mar 2014 19:28:31 +0000 (19:28 +0000)]
bridge_native_rtp: Fix crash involving masquerade

It is possible for a channel to be masqueraded out of a bridge which
means it may no longer have RTP glue to check upon leaving said bridge.
If this situation occurred (it's possible at least during dial and call
pickup) then Asterisk would crash. This change makes sure the glue is
checked before use.

(closes issue AST-1290)
Reported by: John Bigelow

Merged revisions 409900 from

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

9 years agoalembic: Add missing queue and CDR table creation scripts.
Richard Mudgett [Wed, 5 Mar 2014 18:51:37 +0000 (18:51 +0000)]
alembic: Add missing queue and CDR table creation scripts.

* Added the queues and queue_members tables to the config alembic scripts.

* Added the CDR table alembic creation script.  The CDR table is more of
an example for new setups since the actual table can be fully customized
in cdr_adaptive_odbc.conf.

(closes issue ASTERISK-23233)
Reported by: jmls


Merged revisions 409885 from

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

9 years agoFix documentation for PRESENCE_STATE to properly illustrate how to create a presence...
Mark Michelson [Wed, 5 Mar 2014 18:47:30 +0000 (18:47 +0000)]
Fix documentation for PRESENCE_STATE to properly illustrate how to create a presence hint.

There was a missing comma.
This was discovered by Dan Kaplan.

Merged revisions 409886 from

Merged revisions 409887 from

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

9 years agoCorrected cross-platform stat nanosecond code
David M. Lee [Wed, 5 Mar 2014 16:58:21 +0000 (16:58 +0000)]
Corrected cross-platform stat nanosecond code

When nanosecond time resolution was added for identifying config file
changes, it didn't cover all of the myriad of ways that one might obtain
nanosecond time resolution off of struct stat.

Rather than complicate the #if even further figuring out one system from
the next, this patch directly tests for the three struct members I know
about today, and #ifdef's accordingly.


Merged revisions 409833 from

Merged revisions 409834 from

Merged revisions 409835 from

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

9 years agoFix res/res_http_websocket.c build failure in 32bit due to incorrect print format...
Moises Silva [Wed, 5 Mar 2014 16:26:38 +0000 (16:26 +0000)]
Fix res/res_http_websocket.c build failure in 32bit due to incorrect print format for uint64_t

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

9 years agoFix WebRTC over WSS not working
Moises Silva [Wed, 5 Mar 2014 16:22:44 +0000 (16:22 +0000)]
Fix WebRTC over WSS not working

Several fixes for the WebSockets implementation in res/res_http_websocket.c

* Flush the websocket session FILE* as fwrite() may not actually guarantee sending
  the data to the network. If we do not flush, it seems that buffering on the SSL
  socket for outbound messages causes issues

* Refactored ast_websocket_read to take into account that SSL file descriptors
  may be ready to read via fread() but poll() will not actually say so because
  the data was already read from the network buffers and is now in the libc buffers

(closes issue ASTERISK-23099)
(closes issue ASTERISK-21930)

Merged revisions 409681 from

Merged revisions 409697 from

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

9 years agoFix references to 'keys' CLI commands in astgenkey
Sean Bright [Wed, 5 Mar 2014 12:06:48 +0000 (12:06 +0000)]
Fix references to 'keys' CLI commands in astgenkey

Merged revisions 409777 from

Merged revisions 409778 from

Merged revisions 409779 from

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

9 years agoBlocked revisions 409762
Igor Goncharovskiy [Wed, 5 Mar 2014 06:33:39 +0000 (06:33 +0000)]
Blocked revisions 409762

Correct RTP handling in chan_unistim and fix transfer process broken in previous fix:
- Fixed too early RTP setup with phone, that cause no ringback tone on caller side
- Handle call transfer cancel only in STATE_CALL case (related to ASTERISK-23073)

(Reported by: Németh Tamás, niurkin sil)

Merged revisions 409761 from

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

9 years agoAdd update_peer function to unistim_rtp_glue, improve other unistim_rtp_glue function...
Igor Goncharovskiy [Wed, 5 Mar 2014 06:17:03 +0000 (06:17 +0000)]
Add update_peer function to unistim_rtp_glue, improve other unistim_rtp_glue functions conforming to other channel drivers. Do not forget auto-detected and user-selected phone settings on 'unistim reload'

Merged revisions 409705 from

Merged revisions 409745 from

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

9 years agostasis: Made internal_stasis_subscribe() prototype and definition match exactly.
Richard Mudgett [Wed, 5 Mar 2014 01:05:02 +0000 (01:05 +0000)]
stasis: Made internal_stasis_subscribe() prototype and definition match exactly.

Merged revisions 409682 from

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

9 years agofunc_audiohookinheritance: Check If A Channel Was Specified
Michael L. Young [Tue, 4 Mar 2014 19:34:52 +0000 (19:34 +0000)]
func_audiohookinheritance: Check If A Channel Was Specified

This patch prevents a crash when using the function audiohookinheritance without
setting the channel.

(closes issue ASTERISK-23104)
Reported by: Joel Vandal
Tested by: Joel Vandal
                                     uploaded by Michael L. Young (license 5026)


Merged revisions 409623 from

Merged revisions 409625 from

Merged revisions 409626 from

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

9 years agores_rtp_asterisk: Fix one way audio problems with hold/unhold when using ICE
Jonathan Rose [Tue, 4 Mar 2014 17:22:32 +0000 (17:22 +0000)]
res_rtp_asterisk: Fix one way audio problems with hold/unhold when using ICE

ICE sessions will now be restarted if sessions are changed to use new sets of
remote candidates.

(closes issue ASTERISK-22911)
Reported by: Vytis Valentinavičius

Merged revisions 409565 from

Merged revisions 409570 from

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

9 years agoAO2: Add an assert for bad objects
Kinsey Moore [Tue, 4 Mar 2014 16:55:43 +0000 (16:55 +0000)]
AO2: Add an assert for bad objects

This adds an assert that will only be active if Asterisk is compiled
with DO_CRASH and allows the testsuite to fail tests that would
otherwise require log file parsing.

Merged revisions 409566 from

Merged revisions 409567 from

Merged revisions 409568 from

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

9 years agoMinor whitespace change to 'sip show peers' output.
Sean Bright [Tue, 4 Mar 2014 14:55:24 +0000 (14:55 +0000)]
Minor whitespace change to 'sip show peers' output.

(closes issue ASTERISK-23406)
Reported by: ibercom
Tested by: ibercom
    asterisk-11.patch uploaded by ibercom

Merged revisions 409472 from

Merged revisions 409473 from

Merged revisions 409474 from

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

9 years agores_stasis_recording: Fix memory leak of the absolute name.
Joshua Colp [Mon, 3 Mar 2014 19:44:58 +0000 (19:44 +0000)]
res_stasis_recording: Fix memory leak of the absolute name.

Merged revisions 409422 from

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

9 years agodoxygen: Tweak the link back to ye olde Digium website
Matthew Jordan [Mon, 3 Mar 2014 02:08:58 +0000 (02:08 +0000)]
doxygen: Tweak the link back to ye olde Digium website

Merged revisions 409361 from

Merged revisions 409362 from

Merged revisions 409363 from

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

9 years agoMakefile: replace -O6 with -O3
Tzafrir Cohen [Sun, 2 Mar 2014 17:03:56 +0000 (17:03 +0000)]
Makefile: replace -O6 with -O3

-O6 is not a legal option of gcc. Unofficially gcc considers it to be
equivalent of -O3. clang chalks on it, though. This commit sets the
default optimization flag to be -O3, like gcc actually considered it.


Merged revisions 409308 from

Merged revisions 409344 from

Merged revisions 409346 from

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

9 years agores_pjsip_session: Set options (100rel, timers) on incoming sessions.
Joshua Colp [Sat, 1 Mar 2014 20:28:04 +0000 (20:28 +0000)]
res_pjsip_session: Set options (100rel, timers) on incoming sessions.

This change passes options to the UAS creation function. This in turn
sets up 100rel and session timer properties on the incoming session.

Reported by Julian Russell on asterisk-users mailing list.

Merged revisions 409287 from

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

9 years agodevicestate.c: Simplified some logic in _ast_device_state().
Richard Mudgett [Sat, 1 Mar 2014 00:05:38 +0000 (00:05 +0000)]
devicestate.c: Simplified some logic in _ast_device_state().

Merged revisions 409274 from

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

9 years agostasis_cache.c: Remove some unnecessary RAII_VAR() usage.
Richard Mudgett [Sat, 1 Mar 2014 00:02:02 +0000 (00:02 +0000)]
stasis_cache.c: Remove some unnecessary RAII_VAR() usage.

Merged revisions 409272 from

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

9 years agostasis.c: Misc code cleanups.
Richard Mudgett [Fri, 28 Feb 2014 23:31:58 +0000 (23:31 +0000)]
stasis.c: Misc code cleanups.

* Remove some unnecessary RAII_VAR() usage.

* Made the struct stasis_subscription ao2 object use the ao2 lock instead
of a redundant join_lock in the struct for ast_cond_wait().

* Removed locks on some ao2 objects that don't need the lock.

* Made the topic pool entries container use the ao2 template functions.

* Add some missing allocation failure checks.

* Add missing cleanup in off nominal path of dispatch_message().

Merged revisions 409270 from

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

9 years agochan_sip: Add precautionary p->owner checks.
Richard Mudgett [Fri, 28 Feb 2014 21:44:26 +0000 (21:44 +0000)]
chan_sip: Add precautionary p->owner checks.

* Add precautionary p->owner checks in sip_hangup(), get_refer_info(),
get_also_info(), and interpret_t38_parameters().

* Simplify some tangled logic in get_refer_info(), get_also_info(), and

* Removed some dead code in handle_request_invite().

(closes issue ASTERISK-23323)
Reported by: Walter Doekes
      issueA23323-more_p_owner_checks-1.8.x.patch (license #5674) uploaded by wdoekes (modified)
      issueA23323-more_p_owner_checks-11.x.patch (license #5674) uploaded by wdoekes (modified)
      issueA23323-more_p_owner_checks-12.x.patch (license #5674) uploaded by wdoekes (modified)
      issueA23323-more_p_owner_checks-trunk.patch (license #5674) uploaded by wdoekes (modified)

Merged revisions 409207 from

Merged revisions 409255 from

Merged revisions 409256 from

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

9 years agoapp_queue: Fix documented AMI event name
Kinsey Moore [Fri, 28 Feb 2014 21:24:47 +0000 (21:24 +0000)]
app_queue: Fix documented AMI event name

During the rewrite of AMI events to use the Stasis bus, the name of the
QueueMemberPaused event was changed to QueueMemberPause. This corrects
documentation to reflect that.

Merged revisions 409234 from

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