9 years agoPJSIP: Fix outbound OPTIONS support
Kinsey Moore [Thu, 16 Jan 2014 19:33:28 +0000 (19:33 +0000)]
PJSIP: Fix outbound OPTIONS support

When path support was added and contacts were made available during
request creation and transmission, the code path used by outbound
qualify support was not modified correctly and was causing request
creation to fail. This ensures that outbound request creation with only
a contact and no dialog, endpoint, or uri can succeed which restores
qualify support.

Reported by: gtjoseph
Reported by: kharwell

Merged revisions 405743 from

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

9 years agores_fax: check_modem_rate() returned incorrect rate for V.27
Kevin Harwell [Thu, 16 Jan 2014 19:13:05 +0000 (19:13 +0000)]
res_fax: check_modem_rate() returned incorrect rate for V.27

According to the new standard for V.27 and V.32 they are able to transmit
at a bit rate of 4,800 or 9,600.  The check_mode_rate function needed to be
updated to reflect this.  Also, because of this change the default 'minrate'
value was updated to be 4800.

(closes issue ASTERISK-22790)
Reported by: Paolo Compagnini
     res_fax.txt uploaded by looserouting (license 6548)

Merged revisions 405656 from

Merged revisions 405693 from

Merged revisions 405694 from

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

9 years agochan_pjsip: initial device state on endpoints is INVALID
Kevin Harwell [Thu, 16 Jan 2014 16:46:00 +0000 (16:46 +0000)]
chan_pjsip: initial device state on endpoints is INVALID

When endpoints get loaded their device state gets set to 'INVALID' because the
channel driver has not been loaded yet.  Fixed by updating the device state for
every endpoint upon load of the channel driver.

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

Merged revisions 405643 from

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

9 years agoMake 12 - 12.1 CHANGES log the same as in 12
Jonathan Rose [Wed, 15 Jan 2014 16:51:08 +0000 (16:51 +0000)]
Make 12 - 12.1 CHANGES log the same as in 12

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

9 years agoBlocked revisions 405587
Jonathan Rose [Wed, 15 Jan 2014 16:49:17 +0000 (16:49 +0000)]
Blocked revisions 405587

Remove subversion conflict tag accidentally left in CHANGES

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

9 years agoInclude CHANGES info for r405553
Jonathan Rose [Wed, 15 Jan 2014 16:48:02 +0000 (16:48 +0000)]
Include CHANGES info for r405553

Merged revisions 405585 from

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

9 years agocel_manager: Don't crash if configuration file is invalid.
Joshua Colp [Wed, 15 Jan 2014 16:36:47 +0000 (16:36 +0000)]
cel_manager: Don't crash if configuration file is invalid.

The cel_manager module did not properly handle the case where the
configuration file was invalid. The module will now output a warning
message and disable itself if this occurs.

Reported by: Bryan Walters

Merged revisions 405581 from

Merged revisions 405582 from

Merged revisions 405583 from

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

9 years agoPJSIP: Add Path header support
Kinsey Moore [Wed, 15 Jan 2014 13:16:10 +0000 (13:16 +0000)]
PJSIP: Add Path header support

This adds Path support to chan_pjsip in res_pjsip_path.c with minimal
additions in res_pjsip_registrar.c to store the path and additions in
res_pjsip_outbound_registration.c to enable advertisement of path
support to registrars and intervening proxies.

Path information is stored on contacts and is enabled via Address of
Record (AoRs) and Registration configuration sections.

While adding path support, it became necessary to be able to add SIP
supplements that handled messages outside of sessions, so a framework
for handling these types of hooks was added in parallel to the
already-existing session supplements and several senders of
out-of-dialog requests were refactored as a result.

(closes issue ASTERISK-21084)

Merged revisions 405565 from

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

9 years agoARI: Add mailboxes resource for controlling and polling external MWI
Jonathan Rose [Tue, 14 Jan 2014 23:44:57 +0000 (23:44 +0000)]
ARI: Add mailboxes resource for controlling and polling external MWI

Adds the following AMI commands:
PUT mailboxes/mailboxName
    modifies mailbox state and implicitly creates new mailboxes
GET mailboxes/mailboxName
    retrieves a JSON representation of a single mailbox if it exists
GET mailboxes
    retrieves a JSON array of all mailboxes
DELETE mailbox/mailboxName
    deletes a mailbox
Note that res_mwi_external must be loaded for these functions to
actually do anything.


Merged revisions 405553 from

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

9 years agostring container: Remove unnecessary RAII_VAR usage and string object lock.
Richard Mudgett [Tue, 14 Jan 2014 21:46:50 +0000 (21:46 +0000)]
string container: Remove unnecessary RAII_VAR usage and string object lock.

Merged revisions 405541 from

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

9 years agochan_sip: fix Local From tag on outbound register regression
Scott Griepentrog [Tue, 14 Jan 2014 18:15:13 +0000 (18:15 +0000)]
chan_sip: fix Local From tag on outbound register regression

In ASTERISK-12117, an improvement to insure consistant local from tags
on outbound registrations resulted in an undesirable behavior - caused
by leftover unexpired sip_pvt dialogs (with the previous cseq number),
resulting in many uncessary REGISTER requests.  Instead of significant
rework of transmit_register(), this change deletes the dialogs after a
200 OK response indiciating a successful registration, keeping the old
dialogs from interfering with normal operation.

(closes issue ASTERISK-22946)
Reported by: Stephan Eisvogel

Merged revisions 405433 from

Merged revisions 405434 from

Merged revisions 405435 from

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

9 years agoverbosity: Fix performance of console verbose messages.
Richard Mudgett [Tue, 14 Jan 2014 18:14:02 +0000 (18:14 +0000)]
verbosity: Fix performance of console verbose messages.

The per console verbose level feature as previously implemented caused a
large performance penalty.  The fix required some minor incompatibilities
if the new rasterisk is used to connect to an earlier version.  If the new
rasterisk connects to an older Asterisk version then the root console
verbose level is always affected by the "core set verbose" command of the
remote console even though it may appear to only affect the current
console.  If an older version of rasterisk connects to the new version
then the "core set verbose" command will have no effect.

* Fixed the verbose performance by not generating a verbose message if
nothing is going to use it and then filtered any generated verbose
messages before actually sending them to the remote consoles.

* Split the "core set debug" and "core set verbose" CLI commands to remove
the per module verbose support that cannot work with the per console
verbose level.

* Added a silent option to the "core set verbose" command.

* Fixed "core set debug off" tab completion.

* Made "core show settings" list the current console verbosity in addition
to the root console verbosity.

* Changed the default verbose level of the 'verbose' setting in the
logger.conf [logfiles] section.  The default is now to once again follow
the current root console level.  As a result, using the AMI Command action
with "core set verbose" could again set the root console verbose level and
affect the verbose level logged.

(closes issue AST-1252)
Reported by: Guenther Kelleter


Merged revisions 405431 from

Merged revisions 405432 from

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

9 years agoFix erroneous behavior when sending auth rejection to artificial endpoint.
Mark Michelson [Tue, 14 Jan 2014 16:43:33 +0000 (16:43 +0000)]
Fix erroneous behavior when sending auth rejection to artificial endpoint.

We were not including an authentication challenge when sending a 401 response
to unmatched endpoints. This was due to the conversion to use a vector for
authentication section names on an endpoint. The vector for artificial endpoints
was empty, resulting in the challenge being sent back containing no challenges.

This is worked around by placing a bogus value in the artificial endpoint's auth
vector. This value is never looked up by anything, since they instead will directly
call ast_sip_get_artificial_auth().

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

9 years agoSkinny: do not add call to missed calls list if answered elsewhere.
Damien Wedhorn [Tue, 14 Jan 2014 03:27:47 +0000 (03:27 +0000)]
Skinny: do not add call to missed calls list if answered elsewhere.

Patch updates skinny devices with a SKINNY_CONNECTED callstate if an
inbound ringing or callwaiting call is answered elsewhere.

Merged revisions 405367 from

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

9 years agoBlocked revisions 405350
Jonathan Rose [Mon, 13 Jan 2014 17:10:01 +0000 (17:10 +0000)]
Blocked revisions 405350

PJSIP: Backport r405270 - Unhold on reinvite without SDP

Adds behavior to unhold on a reinvite without an SDP section

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

9 years agores_pjsip: Fix CLI tab completion issues
Kinsey Moore [Mon, 13 Jan 2014 13:34:47 +0000 (13:34 +0000)]
res_pjsip: Fix CLI tab completion issues

This fixes several issues with the new res_pjsip CLI tab completion
such as output of headers during tab completion and being able to
tab-complete more items than the code actually handled (further items
would simply be ignored).

(closes issue ASTERISK-23081)
Reported by: xrobau

Merged revisions 405338 from

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

9 years agores_ari: Fix various memory leaks.
Joshua Colp [Sun, 12 Jan 2014 22:24:27 +0000 (22:24 +0000)]
res_ari: Fix various memory leaks.

This change fixes a few memory leaks that were found based
on a mailing list post.

1. Some JSON response messages were never freed. This was
caused by the documentation stating that message references
were stolen when in reality they were not. The code now follows
the documentation and usage has been updated.

2. HTTP response headers were never freed.

3. The variable list for wildcards paths was never freed.

(closes issue ASTERISK-23128)
Reported by: Kenneth Watson (on list)


Merged revisions 405325 from

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

9 years agoCDRs: Synchronize dialplan applications that manipulate CDRs with the engine
Matthew Jordan [Sun, 12 Jan 2014 22:13:12 +0000 (22:13 +0000)]
CDRs: Synchronize dialplan applications that manipulate CDRs with the engine

In, applications and functions that
manipulate CDRs were made to interact over Stasis. This was done to
synchronize manipulations of CDRs from the dialplan with the updates the
engine itself receives over the message bus.

This change rested on a faulty premise: that messages published to the CDR
topic or to a topic that forwards to the CDR topic are synchronized with the
messages handled by the CDR topic subscription in the CDR engine. This is not
the case. There is no ordering guaranteed for two messages published to the
same topic; ordering is only guaranteed if a message is published to the same

Stasis was modified in r405311 to allow a publisher to synchronize on the
subscriber. This patch uses that API to synchronize the CDR publishers with
the CDR engine message router, which maintains the overall topic subscription.

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


Merged revisions 405312 from

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

9 years agostasis: Add methods to allow for synchronous publishing to subscriber
Matthew Jordan [Sun, 12 Jan 2014 22:07:01 +0000 (22:07 +0000)]
stasis: Add methods to allow for synchronous publishing to subscriber

This patch adds an API call to Stasis that allows a publisher to publish a
stasis message that will not return until a specific subscriber handles the
message. Since a subscriber can have their own forwarding topic which orders
messages from many topics, this allows a publisher who knows of that subscriber
to synchronize to that subscriber regardless of the forwarding relationships
between topics.

This is of particular use for dialplan applications that need to synchronize
on a particular subscriber's handling of a message.

(issue ASTERISK-22884)
Reported by: Matt Jordan


Merged revisions 405311 from

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

9 years agoPrint "<unknown>" for artificial endpoint in PJSIP security events.
Mark Michelson [Fri, 10 Jan 2014 20:00:16 +0000 (20:00 +0000)]
Print "<unknown>" for artificial endpoint in PJSIP security events.

Previously, this printed a UUID, which was not very clear when dealing
with an artificial endpoint.


Merged revisions 405298 from

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

9 years agoLogging callid: Fix some sizeof() references per coding guidelines.
Richard Mudgett [Fri, 10 Jan 2014 18:17:48 +0000 (18:17 +0000)]
Logging callid: Fix some sizeof() references per coding guidelines.

Merged revisions 405281 from

Merged revisions 405282 from

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

9 years agoPJSIP: Add unhold on reinvite without SDP behavior
Jonathan Rose [Thu, 9 Jan 2014 23:52:09 +0000 (23:52 +0000)]
PJSIP: Add unhold on reinvite without SDP behavior


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

9 years agoFix chan_dahdi copile issue in dev-mode.
Damien Wedhorn [Thu, 9 Jan 2014 23:50:07 +0000 (23:50 +0000)]
Fix chan_dahdi copile issue in dev-mode.

Error "unused variable i in dahdi_create_channel_range" when compiling
in dev-mode. Small restructure to dahdi_create_channel_range to move
the for(x) loop and int i,x to a block within the IFDEF.

Merged revisions 405268 from

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

9 years agores_pjsip_messaging: potential for field values in from/to headers to be missing
Kevin Harwell [Thu, 9 Jan 2014 23:39:31 +0000 (23:39 +0000)]
res_pjsip_messaging: potential for field values in from/to headers to be missing

Added in ability to specify display name format ("name" <sip:name@ipaddr:port>)
for a given URI and made sure it was fully propagated to the outgoing message.
Also made it so outoing messages in res_pjsip always send as "sip:".

(closes issue ASTERISK-22924)
Reported by: Anthony Messina

Merged revisions 405266 from

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

9 years agoastobj2: Correct ao2_iterator opacity violations
Kinsey Moore [Thu, 9 Jan 2014 20:34:19 +0000 (20:34 +0000)]
astobj2: Correct ao2_iterator opacity violations

This corrects the ao2_iterator opacity violations in
res_pjsip_session.c by adding a global function to get the number of
elements inside the container hidden behind the iterator.

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

Merged revisions 405253 from

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

9 years agores_rtp_asterisk: Fails to resume WebRTC call from hold
Kevin Harwell [Thu, 9 Jan 2014 16:52:57 +0000 (16:52 +0000)]
res_rtp_asterisk: Fails to resume WebRTC call from hold

In ast_rtp_ice_start if the ice session create check list failed, start check
was never initiated and ice_started was never set to true.  Upon re-entering
the function (for instance, [un]hold) it would try to create the check list
again with duplicate remote candidates.

Fixed so that if the create check list fails the necessary data structures
are properly re-initialized for any subsequent retries.

Note, it was decided to not stop ice support (by calling ast_rtp_ice_stop) on a
check list failure because it possible things might still work.  However, a
debug message was added to help with any future troubleshooting.

(closes issue ASTERISK-22911)
Reported by: Vytis Valentinavičius
     works_on_my_machine.patch uploaded by xytis (license 6558)

Merged revisions 405234 from

Merged revisions 405235 from

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

9 years agoapp_confbridge: Fix crash caused when waitmarked/marked users leave together
Matthew Jordan [Thu, 9 Jan 2014 15:50:23 +0000 (15:50 +0000)]
app_confbridge: Fix crash caused when waitmarked/marked users leave together

When waitmarked users join a ConfBridge, the conference state is transitioned
from EMPTY -> INACTIVE. In this state, the users are maintined in a waiting
users list. When a marked user joins, the ConfBridge conference transitions
from INACTIVE -> MULTI_MARKED, and all users are put onto the active list of
users. This process works correctly.

When the marked user leaves, if they are the last marked user, the MULTI_MARKED
state does the following:
(1) It plays back a message to the bridge stating that the leader has left the
    conference. This requires an unlocking of the bridge.
(2) It moves waitmarked users back to the waiting list
(3) It transitions to the appropriate state: in this case, INACTIVE

However, because it plays the prompt back to the bridge before moving the users
and before finishing the state transition, this creates a race condition: with
the bridge unlocked, waitmarked users who leave the conference (or are kicked
from it) can cause a state transition of the bridge to another state before
the conference is transitioned to the INACTIVE state. This causes the state
machine to get a bit wonky, often leading to a crash when the MULTI_MARKED state
attempts to conclude its processing.

This patch fixes this problem:
(1) It prevents kicked users from being kicked again. That's just a nicety.
(2) More importantly, it fixes the race condition by only playing the prompt
    once the state has transitioned correctly to INACTIVE. If waitmarked users
    sneak out during the prompt being played, no harm no foul.


Note that the patch committed here is essentially the same as uploaded by
Simon Moxon on ASTERISK-22740, with the addition of the double kick prevention.

(closes issue AST-1258)
Reported by: Steve Pitts

(closes issue ASTERISK-22740)
Reported by: Simon Moxon
  ASTERISK-22740.diff uploaded by Simon Moxon (license 6546)

Merged revisions 405215 from

Merged revisions 405216 from

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

9 years ago"Minimun" typo.
Walter Doekes [Thu, 9 Jan 2014 14:15:23 +0000 (14:15 +0000)]
"Minimun" typo.

Merged revisions 405160 from

Merged revisions 405161 from

Merged revisions 405162 from

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

9 years agoUse proper case for checking if digest authentication is used.
Mark Michelson [Wed, 8 Jan 2014 17:23:03 +0000 (17:23 +0000)]
Use proper case for checking if digest authentication is used.

Merged revisions 405131 from

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

9 years agopbx_lua: Add support for Lua 5.2
Kinsey Moore [Wed, 8 Jan 2014 16:34:24 +0000 (16:34 +0000)]
pbx_lua: Add support for Lua 5.2

This adds support for Lua 5.2 in pbx_lua which is available on newer
operating systems.

(closes issue ASTERISK-23011)
Reported by: George Joseph
Patch by: George Joseph

Merged revisions 405090 from

Merged revisions 405091 from

Merged revisions 405124 from

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

9 years agoAdd the missing part of r400140
Kinsey Moore [Wed, 8 Jan 2014 16:30:14 +0000 (16:30 +0000)]
Add the missing part of r400140

When the patch to add retry-on-forbidden-response was committed, part
of the patch for chan_sip was not committed which caused the feature to
be entirely nonfunctional. This corrects the code in question.

(closes issue ASTERISK-17138)

Merged revisions 405033 from

Merged revisions 405081 from

Merged revisions 405083 from

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

9 years agores_pjsip_acl: Fix another case of assuming a contact will always contain a URI.
Joshua Colp [Tue, 7 Jan 2014 19:56:18 +0000 (19:56 +0000)]
res_pjsip_acl: Fix another case of assuming a contact will always contain a URI.

Merged revisions 405034 from

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

9 years agores_pjsip_nat: Don't assume a Contact header will always contain a URI.
Joshua Colp [Tue, 7 Jan 2014 14:56:10 +0000 (14:56 +0000)]
res_pjsip_nat: Don't assume a Contact header will always contain a URI.

If the 'rewrite_contact' option was enabled and a Contact header was received
which contained a '*' a crash would occur.

This change makes the res_pjsip_nat module ignore the Contact header if it
contains only a '*'.

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

Merged revisions 405019 from

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

9 years agoapp_voicemail: Explicitly set defaultenabled=yes
Richard Mudgett [Mon, 6 Jan 2014 21:55:09 +0000 (21:55 +0000)]
app_voicemail: Explicitly set defaultenabled=yes

Merged revisions 405006 from

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

9 years agoExternal MWI AMI support.
Richard Mudgett [Mon, 6 Jan 2014 17:49:05 +0000 (17:49 +0000)]
External MWI AMI support.

The external MWI AMI interface provides a thin wrapper around the core
external MWI resource.

The resource adds the following AMI actions:
MWIDelete, and

(closes issue AFS-46)


Merged revisions 404954 from

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

9 years agoExternal MWI core support.
Richard Mudgett [Mon, 6 Jan 2014 17:45:25 +0000 (17:45 +0000)]
External MWI core support.

* The core external MWI resource provides for MWI message counts
persistence using sorcery.  With sorcery, the user is able to configure
which sorcery wizzard backend to use if the default astdb is not desired.

* The core external MWI resoruce provides some debugging CLI commands
enabled by defining MWI_DEBUG_CLI.

The debugging CLI commands are:
"mwi delete all",
"mwi delete like <regex>",
"mwi delete mailbox <mailbox>",
"mwi list all",
"mwi list like <regex>",
"mwi show mailbox <mailbox>", and
"mwi update mailbox <mailbox> [<new> [<old>]]".

(closes issue AFS-43)


Merged revisions 404952 from

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

9 years agores_pjsip_outbound_registration: Don't assume that a registration client will always...
Joshua Colp [Sun, 5 Jan 2014 16:01:53 +0000 (16:01 +0000)]
res_pjsip_outbound_registration: Don't assume that a registration client will always exist.

Merged revisions 404935 from

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

9 years agores_pjsip_outbound_registration: Create registration client in pj thread.
Joshua Colp [Sun, 5 Jan 2014 01:31:19 +0000 (01:31 +0000)]
res_pjsip_outbound_registration: Create registration client in pj thread.

Depending on which threading was loading the outbound registration it was
possible for the registration client to be allocated outside of a pj thread.
This change moves the creation inside the synchronous task where it is
guaranteed it will occur in a pj thread.

Reported by: Rob Thomas

Merged revisions 404923 from

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

9 years agoasterisk.c: suppress live_dangerously warning on rasterisk
Tzafrir Cohen [Sat, 4 Jan 2014 10:52:43 +0000 (10:52 +0000)]
asterisk.c: suppress live_dangerously warning on rasterisk

Even since the fixes of AST-2013-007, Asterisk prints the following
warning on startup if the user decided to live dangerously:

  Privilege escalation protection disabled!
  See for more details.

This message is intended for the logs and interactive startup. No need
for it to appear on a remote console. This commit removes it from there.

(closes issue ASTERISK-23084)

Merged revisions 404861 from

Merged revisions 404888 from

Merged revisions 404911 from

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

9 years agocel_pgsql: module not correctly reloading
Kevin Harwell [Fri, 3 Jan 2014 22:00:42 +0000 (22:00 +0000)]
cel_pgsql: module not correctly reloading

Upon reload the module unconditionally "unloaded" the module (freeing memory
and setting pointers to NULL) and then when attempting a "load" if the config
file had not changed then nothing would be reinitialized.

By moving the "unload" to occur conditionally (reload only) after an attempted
configuration load, but before module "loading" alleviates the issue. The module
now loads/unloads/reloads correctly.

(closes issue ASTERISK-22871)
Reported by: Matteo

Merged revisions 404857 from

Merged revisions 404858 from

Merged revisions 404859 from

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

9 years agores_pjsip_logger: Add the ASTERISK_FILE_VERSION macro
Matthew Jordan [Fri, 3 Jan 2014 21:45:46 +0000 (21:45 +0000)]
res_pjsip_logger: Add the ASTERISK_FILE_VERSION macro

Registering yourself with the Asterisk core is the nice thing to do, even
when you're a logging module.

Merged revisions 404855 from

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

9 years agores_pjsip_authenticator_digest: Fix md5 hash buffer
Matthew Jordan [Fri, 3 Jan 2014 21:13:30 +0000 (21:13 +0000)]
res_pjsip_authenticator_digest: Fix md5 hash buffer

An md5 hash is 32 bytes long. The char buffer must be at least 33 bytes to
avoid clobbering of the stack. This patch also fixes a potential clobbering
in test_utils.c.

Thanks to Andrew Nagy for reporting and testing this out in #asterisk-dev

Reported by: Andrew Nagy
Tested by: Andrew Nagy

Merged revisions 404843 from

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

9 years agomanager: UserEvent including action on output
Kevin Harwell [Fri, 3 Jan 2014 20:02:03 +0000 (20:02 +0000)]
manager: UserEvent including action on output

AMI action UserEvent event response would include the action header in its
keyvalue pairs list. Adjusted the start of the header loop to skip over the
action part.

(closes issue ASTERISK-22899)
Reported by: outtolunc
     svn_manager.c.skip_action.diff.txt uploaded by outtolunc (license 5198)

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

9 years agochan_dahdi: dahdi show channels slices PRI channel dnid on output
Kevin Harwell [Fri, 3 Jan 2014 19:02:25 +0000 (19:02 +0000)]
chan_dahdi: dahdi show channels slices PRI channel dnid on output

dahdi show channels output slices the callerid (which is dnid copied over on
PRI channels). If the channel naming structures look like:


then the output slices 1408409XXXX down to 1408409XXX. This patch just opens
it up to 15 chars so you can see the whole thing.

(closes issue ASTERISK-22918)
Reported by: outtolunc
     svn_chan_dahdi.c.format12_15.diff.txt uploaded by outtolunc (license 5198)

Merged revisions 404784 from

Merged revisions 404785 from

Merged revisions 404786 from

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

9 years agotest_stasis.c: Fix ref leak in normal execution path.
Richard Mudgett [Fri, 3 Jan 2014 18:33:19 +0000 (18:33 +0000)]
test_stasis.c: Fix ref leak in normal execution path.

Merged revisions 404764 from

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

9 years agoapp_meetme: compiler warning
Kevin Harwell [Fri, 3 Jan 2014 18:31:35 +0000 (18:31 +0000)]
app_meetme: compiler warning

Fixed a compiler warning (errors in 'dev-mode') given by gcc version 4.8.1.
The one in app_meetme involved the 'sizeof-pointer-memaccess'
(see: warning. Fixed so
it would no longer issue a warning and can compile again in 'dev-mode'.


Merged revisions 404742 from

Merged revisions 404773 from

Merged revisions 404781 from

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

9 years agores_pjsip: Ensure more URI validation happens in pj threads.
Joshua Colp [Fri, 3 Jan 2014 17:27:08 +0000 (17:27 +0000)]
res_pjsip: Ensure more URI validation happens in pj threads.

Merged revisions 404737 from

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

9 years agores_pjsip_outbound_registration: Ensure URI validation happens in a pjlib thread.
Joshua Colp [Fri, 3 Jan 2014 17:10:23 +0000 (17:10 +0000)]
res_pjsip_outbound_registration: Ensure URI validation happens in a pjlib thread.

This change moves outbound registration URI validation into the task executed
within a pjlib thread.

Reported by: Andrew Nagy

Merged revisions 404725 from

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

9 years agofunc_strings: use memmove to prevent overlapping memory on strcpy
Scott Griepentrog [Thu, 2 Jan 2014 19:38:09 +0000 (19:38 +0000)]
func_strings: use memmove to prevent overlapping memory on strcpy

When calling REPLACE() with an empty replace-char argument, strcpy
is used to overwrite the the matching <find-char>.  However as the
src and dest arguments to strcpy must not overlap, it causes other
parts of the string to be overwritten with adjacent characters and
the result is mangled.  Patch replaces call to strcpy with memmove
and adds a test suite case for REPLACE.

(closes issue ASTERISK-22910)
Reported by: Gareth Palmer
    func_strings.patch uploaded by Gareth Palmer (license 5169)

Merged revisions 404674 from

Merged revisions 404675 from

Merged revisions 404676 from

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

9 years agores_pjsip: add 'set_var' support on endpoints
Kevin Harwell [Thu, 2 Jan 2014 19:08:19 +0000 (19:08 +0000)]
res_pjsip: add 'set_var' support on endpoints

Added a new 'set_var' option for ast_sip_endpoint(s).  For each variable
specified that variable gets set upon creation of a pjsip channel involving
the endpoint.

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

Merged revisions 404663 from

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

9 years agochan_pjsip: Handle hanging up before calling.
Joshua Colp [Tue, 31 Dec 2013 22:51:04 +0000 (22:51 +0000)]
chan_pjsip: Handle hanging up before calling.

Channel creation in Asterisk is broken up into two steps: requesting and calling.
In some cases a channel may be requested but never called. This happens in the
ChanIsAvail dialplan application for determining if something is reachable or
not. The PJSIP channel driver did not take this situation into account and
attempted to end a session that was never called out on.

The code now checks the session state to determine if the session has been
called out on and if not terminates it instead of ending it.

(closes issue ASTERISK-23074)
Reported by: Kilburn

Merged revisions 404652 from

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

9 years agores_pjsip_endpoint_identifier_ip: Accept hostnames in the 'match' field.
Joshua Colp [Tue, 31 Dec 2013 22:21:07 +0000 (22:21 +0000)]
res_pjsip_endpoint_identifier_ip: Accept hostnames in the 'match' field.

Hostnames specified in the 'match' field will be resolved and all addresses
returned. Each address will be added to the endpoint identifier for the
matching process.

Reported by: Rob Thomas

Merged revisions 404613 from

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

9 years agocel_pgsql: deadlock on unload and core_event_dispatcher
Kevin Harwell [Tue, 31 Dec 2013 21:39:45 +0000 (21:39 +0000)]
cel_pgsql: deadlock on unload and core_event_dispatcher

A deadlock can happen between a thread unloading or reloading the cel_pgsql
module and the core_event_dispatcher taskprocessor thread. Description of
what is happening:

Thread 1 (for example, a netconsole thread):

    a "module reload cel_pgsql" is launched
    the thread enter the "my_unload_module" function (cel_pgsql.c)
    the thread acquire the write lock on psql_columns
    the thread enter the "ast_event_unsubscribe" function (event.c)
    the thread try to acquire the write lock on ast_event_subs[sub->type]

Thread 2 (core_event_dispatcher taskprocessor thread):

    the taskprocessor pop a CEL event
    the thread enter the "handle_event" function (event.c)
    the thread acquire the read lock on ast_event_subs[sub->type]
    the thread callback the "pgsql_log" function (cel_pgsql.c), since it's a subscriber of CEL events
    the thread try to acquire a read lock on psql_columns

(closes issue ASTERISK-22854)
Reported by: Etienne Lessard
     cel_pgsql_fix_deadlock_event.patch uploaded by hexanol (license 6394)

Merged revisions 404603 from

Merged revisions 404604 from

Merged revisions 404605 from

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

9 years agores_pjsip_outbound_registration: Add validation for 'server_uri' and 'client_uri'.
Joshua Colp [Tue, 31 Dec 2013 20:27:03 +0000 (20:27 +0000)]
res_pjsip_outbound_registration: Add validation for 'server_uri' and 'client_uri'.

When applying configuration for outbound registrations the 'server_uri' and
'client_uri' fields were not validated. The code will now confirm that they
exist and that they contain parseable SIP URIs.

Reported by: Andrew Nagy

Merged revisions 404592 from

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

9 years agochannels.c: core show channeltypes slicing
Kevin Harwell [Mon, 30 Dec 2013 23:25:53 +0000 (23:25 +0000)]
channels.c: core show channeltypes slicing

'core show channeltypes' type column is being sliced, resulting in incomplete
type names.

(closes issue ASTERISK-22919)
Reported by: outtolunc
     svn_channel.c.format_15.diff.txt uploaded by outtolunc (license 5198)

Merged revisions 404579 from

Merged revisions 404581 from

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

9 years agoAdded note to UPGRADE.txt about the default value of live_dangerously changing
David M. Lee [Tue, 24 Dec 2013 17:12:03 +0000 (17:12 +0000)]
Added note to UPGRADE.txt about the default value of live_dangerously changing

Merged revisions 404568 from

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

9 years agohttp: Properly reject requests with Transfer-Encoding set
David M. Lee [Tue, 24 Dec 2013 16:50:48 +0000 (16:50 +0000)]
http: Properly reject requests with Transfer-Encoding set

Asterisk does not support any of the transfer encodings specified in
HTTP/1.1, other than the default "identity" encoding.

According to RFC 2616:

   A server which receives an entity-body with a transfer-coding it does
   not understand SHOULD return 501 (Unimplemented), and close the
   connection. A server MUST NOT send transfer-codings to an HTTP/1.0

This patch adds the 501 Unimplemented response, instead of the hard work
of actually implementing other recordings.

This behavior is especially problematic for Node.js clients, which use
chunked encoding by default.

(closes issue ASTERISK-22486)

Merged revisions 404565 from

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

9 years agores_pjsip_pubsub: Ensure dialog manipulation happens on proper thread.
Joshua Colp [Tue, 24 Dec 2013 02:20:18 +0000 (02:20 +0000)]
res_pjsip_pubsub: Ensure dialog manipulation happens on proper thread.

When destroying a subscription we remove the serializer from its dialog
and decrease its reference count. Depending on which thread dropped the
subscription reference count to 0 it was possible for this to occur in
a thread where it is not possible.

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

Merged revisions 404553 from

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

9 years agochan_dahdi: enable ignore_failed_channels by default
Tzafrir Cohen [Mon, 23 Dec 2013 16:38:43 +0000 (16:38 +0000)]
chan_dahdi: enable ignore_failed_channels by default

If ignore_failed_channels is set to "true" for a channel, the channel
will continue to be configured even if configuring it has failed.

This allows Asterisk to start before all the DAHDI initialization is
done and thus not force the starting order dahdi -> asterisk.


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

9 years agores_pjsip/pjsip_cli: fix compilation error caused by passing ast_free
Matthew Jordan [Sat, 21 Dec 2013 03:35:04 +0000 (03:35 +0000)]
res_pjsip/pjsip_cli: fix compilation error caused by passing ast_free

When wanting to pass *free as a function pointer, ast_free_ptr has to be used
instead of ast_free. This allows it to be compiled with MALLOC_DEBUG enabled.

Merged revisions 404531 from

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

9 years agoari: Remove support for specifying channel vars during origination.
David M. Lee [Fri, 20 Dec 2013 22:04:15 +0000 (22:04 +0000)]
ari: Remove support for specifying channel vars during origination.

When we added support for specifying channel variables for an
origination, we didn't consider how that would interact with another
feature, namely specifying request parameters in a JSON request body.

The method of specifying channel variables (as a flat JSON object passed
in the JSON body) interferes with parsing parameters out of the request

Unfortunately, fixing this would be a backward incompatible change. In
the interest of keeping the API sane and keeping our release schedule,
we're dropping the feature for specifying channel variables in the
origination request.

We will bring the feature back soon, as a backward compatible addition
to the API.

(closes issue ASTERISK-23051)

Merged revisions 404509 from

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

9 years agoRemove automerge properties
David M. Lee [Fri, 20 Dec 2013 22:03:43 +0000 (22:03 +0000)]
Remove automerge properties

Merged revisions 404488 from

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

9 years agores_pjsip: Add PJSIP CLI commands
Matthew Jordan [Fri, 20 Dec 2013 21:32:13 +0000 (21:32 +0000)]
res_pjsip: Add PJSIP CLI commands

Implements the following cli commands:
pjsip list aors
pjsip list auths
pjsip list channels
pjsip list contacts
pjsip list endpoints
pjsip show aor(s)
pjsip show auth(s)
pjsip show channels
pjsip show endpoint(s)

Minor modifications made to the AMI command implementations to facilitate

New function ast_variable_list_sort added to config.c and config.h to implement
variable list sorting.

(issue ASTERISK-22610)
  pjsip_cli_v2.patch uploaded by george.joseph (License 6322)

Merged revisions 404480 from

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

9 years agosay.c: correct time for polish
Scott Griepentrog [Fri, 20 Dec 2013 21:18:00 +0000 (21:18 +0000)]
say.c: correct time for polish

In ast_say_date_with_format_pl(), change ast_say_number() to
use tm_sec instead of tm_mn.

(closes issue ASTERISK-22856)
Reported by: Robert Mordec
     say.c.patch uploaded by veilen (license 6555)

Merged revisions 404456 from

Merged revisions 404457 from

Merged revisions 404458 from

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

9 years agoFix issue where PJSIP blind transferer dialog may not complete as planned.
Mark Michelson [Fri, 20 Dec 2013 20:28:19 +0000 (20:28 +0000)]
Fix issue where PJSIP blind transferer dialog may not complete as planned.

When transferring to a dialplan extension that will not place any outbound
calls, the only control frames that the PJSIP REFER framehook will receive
are inconsequential (such as unhold or srcchange). As such, we shouldn't
allow for the reception of those types of frames prevent us from signaling
to the transferring party that the transfer has completed successfully once
voice frames are read.

Thanks to Jonathan Rose for pointing this out.

Merged revisions 404439 from

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

9 years agores_stasis_device_state: Set resource type for subscriptions to deviceState
Matthew Jordan [Fri, 20 Dec 2013 20:05:40 +0000 (20:05 +0000)]
res_stasis_device_state: Set resource type for subscriptions to deviceState

The documentation for ARI already specifies that the device state resource when
used for subscribing for events is "deviceState", not "device_state". The code,
however, used "device_state"; although this was inconsistent as well in doxygen
comments in resource_applications.

Because the actual resource being subscribed to is /deviceStates/{device}/, it
makes sense for the resource type specifier to be deviceState.

Note that the key value in the events is still "device_state".

Merged revisions 404437 from

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

9 years agoao2_iterator: Mini-audit of the ao2_iterator loops in the new code files.
Richard Mudgett [Fri, 20 Dec 2013 20:00:50 +0000 (20:00 +0000)]
ao2_iterator: Mini-audit of the ao2_iterator loops in the new code files.

* Fixed several places where ao2_iterator_destroy() was not called.

* Fixed several iterator loop object variable reference problems.

* Fixed res_parking AMI actions returning non-zero.  Only the AMI logoff
action can return non-zero.


Merged revisions 404434 from

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

9 years agomanager: bump version to 2.0.0
Matthew Jordan [Fri, 20 Dec 2013 19:25:20 +0000 (19:25 +0000)]
manager: bump version to 2.0.0

AMI has received substantial updates over the past year. Not only has the
syntax been vastly improved and made consistent (which entails many event
changes), but the underlying things that those events convey have changed
substantially as well.

After some conversation in #asterisk-dev, it was agreed that this is a good
time to jump to 2.

At the same time, since ARI will most likely use semantic versioning, we
might as well use that for AMI as well. That also affords us greater meaning
for the AMI version.

Merged revisions 404421 from

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

9 years agoWhitespace fixes.
Richard Mudgett [Fri, 20 Dec 2013 19:06:57 +0000 (19:06 +0000)]
Whitespace fixes.

Merged revisions 404419 from

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

9 years agoDocumentation: Updates for info about NAT-related settings and fixes for pjsip.conf...
Rusty Newton [Fri, 20 Dec 2013 17:22:27 +0000 (17:22 +0000)]
Documentation: Updates for info about NAT-related settings and fixes for pjsip.conf.sample

Added another NAT example to pjsip.conf.sample. We had a few mentions of NAT configuration throughout the sample, but I added another for a little bit more clarity.

Additionally many pjsip options were affected by the change to snake case, so I fixed any instances of those options in pjsip.conf.

I regenerated the config option list (at the bottom of the file) from a new xml config doc dump, so all the snake case changes should be reflected there, as well as any other changes to those options.

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

Merged revisions 404405 from

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

9 years agosecurity_events: log events with descriptive names
Scott Griepentrog [Thu, 19 Dec 2013 20:48:19 +0000 (20:48 +0000)]
security_events: log events with descriptive names

This patch updates the log messages to include descriptive
names for event types.  This is an improvement over having
only cryptic type numbers.

(closes issue ASTERISK-22909)
Reported by: outtolunc
     svn_security_events.c.names.diff.txt uploaded by outtolunc (license 5198)

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

9 years agoPut notice in CHANGES as well as UPGRADE.txt.
Richard Mudgett [Thu, 19 Dec 2013 18:16:41 +0000 (18:16 +0000)]
Put notice in CHANGES as well as UPGRADE.txt.

Merged revisions 404375 from

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

9 years agores_pjsip: Ignore 401/407 responses for transactions and dialogs we don't know about.
Joshua Colp [Thu, 19 Dec 2013 18:00:33 +0000 (18:00 +0000)]
res_pjsip: Ignore 401/407 responses for transactions and dialogs we don't know about.

Under normal conditions it is unlikely we will ever receive a response for a transaction
or dialog we don't know about but if any are received ignore them.

Merged revisions 404371 from

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

9 years agores_pjsip_session: Fix SDP negotiation when resending an INVITE with authentication.
Joshua Colp [Thu, 19 Dec 2013 17:55:28 +0000 (17:55 +0000)]
res_pjsip_session: Fix SDP negotiation when resending an INVITE with authentication.

The process for resending an INVITE with authentication involves restarting the UAC
session. We were incorrectly passing in that a new offer is being sent, causing the
SDP negotiation to get into a (technically speaking) funky state.

Merged revisions 404369 from

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

9 years agoFix a deadlock that occurred due to a conflict of masquerades.
Mark Michelson [Thu, 19 Dec 2013 17:45:21 +0000 (17:45 +0000)]
Fix a deadlock that occurred due to a conflict of masquerades.

For the explanation, here is a copy-paste of the review board explanation:

Initially, it was discovered that performing an attended transfer of a
multiparty bridge with a PJSIP channel would cause a deadlock. A PBX thread
started a masquerade and reached the point where it was calling the fixup()
callback on the "original" channel. For chan_pjsip, this involves pushing a
synchronous task to the session's serializer. The problem was that a task ahead
of the fixup task was also attempting to perform a channel masquerade. However,
since masquerades are designed in a way to only allow for one to occur at a
time, the task ahead of the fixup could not continue until the masquerade
already in progress had completed. And of course, the masquerade in progress
could not complete until the task ahead of the fixup task had completed.

The initial fix was to change the fixup task to be asynchronous. While this
prevented the deadlock from occurring, it had the frightful side effect of
potentially allowing for tasks in the session's serializer to operate on a
zombie channel.

Taking a step back from this particular deadlock, it became clear that the
problem was not really this one particular issue but that masquerades
themselves needed to be addressed. A PJSIP attended transfer operation calls
ast_channel_move(), which attempts to both set up and execute a masquerade. The
problem was that after it had set up the masquerade, the PBX thread had swooped
in and tried to actually perform the masquerade. Looking at changes that had
been made to Asterisk 12, it became clear that there never is any time now that
anyone ever wants to set up a masquerade and allow for the channel thread to
actually perform the masquerade. Everyone always is calling ast_channel_move(),
performs the masquerade itself before returning.

In this patch, I have removed all blocks of code from channel.c that will
attempt to perform a masquerade if ast_channel_masq() returns true. Now, there
is no distinction between setting up a masquerade and performing the
masquerade. It is one operation. The only remaining checks for
ast_channel_masq() and ast_channel_masqr() are in ast_hangup() since we do not
want to interrupt a masquerade by hanging up the channel. Instead, now
ast_hangup() will wait for a masquerade to complete before moving forward with
its operation.

The ast_channel_move() function has been modified to basically in-line the
logic that used to be in ast_channel_masquerade(). ast_channel_masquerade() has
been killed off for real. ast_channel_move() now has a lock associated with it
that is used to prevent any simultaneous moves from occurring at once. This
means there is no need to make sure that ast_channel_masq() or
ast_channel_masqr() are already set on a channel when ast_channel_move() is
called. It also means the channel container lock is not pulling double duty by
both keeping the container locked and preventing multiple masquerades from
occurring simultaneously.

The ast_do_masquerade() function has been renamed to do_channel_masquerade()
and is now internal to channel.c. The function now takes explicit arguments of
which channels are involved in the masquerade instead of a single channel.
While it probably is possible to do some further refactoring of this method, I
feel that I would be treading dangerously. Instead, all I did was change some
comments that no longer are true after this changeset.

The other more minor change introduced in this patch is to res_pjsip.c to make
ast_sip_push_task_synchronous() run the task in-place if we are already a SIP
servant thread. This is related to this patch because even when we isolate the
channel masquerade to only running in the SIP servant thread, we would still
deadlock when the fixup() callback is reached since we would essentially be
waiting forever for ourselves to finish before actually running the fixup. This
makes it so the fixup is run without having to push a task into a serializer at

(closes issue ASTERISK-22936)
Reported by Jonathan Rose


Merged revisions 404356 from

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

9 years agoudptl: Dead code elimination. ast_udptl_bridge was not used.
Richard Mudgett [Thu, 19 Dec 2013 17:13:53 +0000 (17:13 +0000)]
udptl: Dead code elimination. ast_udptl_bridge was not used.

Removing dead code starting with ast_udptl_bridge() eliminated the code in
this change.

Note: This code has actually been dead since Asterisk v1.4 when it was
first put in.


Merged revisions 404354 from

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

9 years agores_fax.c: crash on framehook with no dsp in fax detect
Scott Griepentrog [Thu, 19 Dec 2013 17:03:20 +0000 (17:03 +0000)]
res_fax.c: crash on framehook with no dsp in fax detect

In fax_detect_framehook() a null pointer reference can occur where a
voice frame is processed but no dsp is attached to the fax detection
structure.  The code block that rejects frames that detection cannot
be processed on is checking for dsp but falls through when it should
instead return, as this change implements.

(closes issue ASTERISK-22942)
Reported by: adomjan

Merged revisions 404351 from

Merged revisions 404352 from

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

9 years agoVoicemail: Remove mailbox identifier format (box@context) assumptions in the system.
Richard Mudgett [Thu, 19 Dec 2013 16:52:43 +0000 (16:52 +0000)]
Voicemail: Remove mailbox identifier format (box@context) assumptions in the system.

This change is in preparation for external MWI support.

Removed code from the system for normal mailbox handling that appends
@default to the mailbox identifier if it does not have a context.  The
only exception is the legacy hasvoicemail users.conf option.  The legacy
option will only work for app_voicemail mailboxes.  The system cannot make
any assumptions about the format of the mailbox identifer used by

chan_sip and chan_dahdi/sig_pri had the most changes because they both
tried to interpret the mailbox identifier.  chan_sip just stored and
compared the two components.  chan_dahdi actually used the box

The ISDN MWI support configuration options had to be reworked because
chan_dahdi was parsing the box@context format to get the box number.  As a
result the mwi_vm_boxes chan_dahdi.conf option was added and is documented
in the chan_dahdi.conf.sample file.


Merged revisions 404348 from

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

9 years agoastdb: crash in sqlite3 during shutdown
Scott Griepentrog [Thu, 19 Dec 2013 16:33:09 +0000 (16:33 +0000)]
astdb: crash in sqlite3 during shutdown

When Asterisk is shut down, the astdb_atexit() function releases
(finalize) the previously initiated (prepared) SQL statements in
sqlite3.  Another thread making a subsequent request can cause a
crash in sqlite3.  This patch eliminates that issue by resetting
the statement pointer after it is released/cleared.  The sqlite3
code detects the null pointer, and aborts the operation cleanly.

(closes issue AST-1265)
Reported by: Alexander Hömig
(closes issue ASTERISK-22350)
Reported by: Birger "WIMPy" Harzenetter

Merged revisions 404344 from

Merged revisions 404345 from

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

9 years agochannel: Add a missing ast_channel_unlock when allocating a Surrogate channel.
Joshua Colp [Thu, 19 Dec 2013 12:18:52 +0000 (12:18 +0000)]
channel: Add a missing ast_channel_unlock when allocating a Surrogate channel.

Merged revisions 404332 from

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

9 years agoHandle temporary failures on gk registration
Alexandr Anikin [Thu, 19 Dec 2013 08:35:28 +0000 (08:35 +0000)]
Handle temporary failures on gk registration
Introduce new 'stopped' state for gk client and restart gk client
on failures
Remove ooh323 stack command lock as it is not need now.
(closes issue ASTERISK-21960)
Reported by: Dmitry Melekhov
Tested by: Dmitry Melekhov

Merged revisions 404318 from

Merged revisions 404320 from

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

9 years agoFixup some skinny bugs causing Fracks and ao2 cleanup issues.
Damien Wedhorn [Thu, 19 Dec 2013 02:59:52 +0000 (02:59 +0000)]
Fixup some skinny bugs causing Fracks and ao2 cleanup issues.

Moved channel locking into setsubstate so that a process can complete
working on a sub before another starts changing it. The existing code
was causing some Fracks with schedule deletion.

Removed multiple rtp cleanup. Now only cleansup up once, fixing ao2
object cleanup issues.

Merged revisions 404306 from

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

9 years agoapp_cdr,app_forkcdr,func_cdr: Synchronize with engine when manipulating state
Matthew Jordan [Thu, 19 Dec 2013 00:50:01 +0000 (00:50 +0000)]
app_cdr,app_forkcdr,func_cdr: Synchronize with engine when manipulating state

When doing the rework of the CDR engine that pushed all of the logic into cdr.c
and made it respond to changes in channel state over Stasis, we knew that
accessing the CDR engine from the dialplan would be "slightly"
non-deterministic. Dialplan threads would be accessing CDRs while Stasis
threads would be updating the state of said CDRs - whereas in the past,
everything happened on the dialplan threads. Tests have shown that "slightly"
is in reality "very".

This patch synchronizes things by making the dialplan applications/functions
that manipulate CDRs do so over Stasis. ForkCDR, NoCDR, ResetCDR, CDR, and
CDR_PROP now all use Stasis to send their requests over to the CDR engine,
and synchronize on the channel Stasis topic via a subscription so that they
return their values/control to the dialplan at the appropriate time.

While going through this, the following changes were also made:
 * DISA, which can reset the CDR when a user successfully authenticates, now
   just uses the ResetCDR app to do this. This prevents having to duplicate
   the same Stasis synchronization logic in that application.
 * Answer no longer disables CDRs. It actually didn't work anyway - calling
   DISABLE on the channel's CDR doesn't stop the CDR from getting the Answer
   time - it just kills all CDRs on that channel, which isn't what the caller
   would intend.

(closes issue ASTERISK-22884)
(closes issue ASTERISK-22886)


Merged revisions 404294 from

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

9 years agoFixup skinny registration following network issues.
Damien Wedhorn [Thu, 19 Dec 2013 00:32:00 +0000 (00:32 +0000)]
Fixup skinny registration following network issues.

On session registration, if device is already reporting that it is
connected to a device, an innocuous packet (update time) is sent to
the already connected device. If the tcp connection is down, the
device will be unregistered and the new connection allowed.

Without this patch, network issues can see a situation where a device
can not reregister until after 3*timeout.

Merged revisions 404292 from

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

9 years agoAdd AMI event for presence state.
Jason Parker [Wed, 18 Dec 2013 23:00:03 +0000 (23:00 +0000)]
Add AMI event for presence state.


Merged revisions 404275 from

Merged revisions 404279 from

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

9 years agoooh323c: Fix gcc 4.6.3 compiler warnings.
Richard Mudgett [Wed, 18 Dec 2013 21:12:58 +0000 (21:12 +0000)]
ooh323c: Fix gcc 4.6.3 compiler warnings.

Merged revisions 404212 from

Merged revisions 404219 from

Merged revisions 404263 from

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

9 years agochan_oss.c: channel being locked twice and unlocked once
Kevin Harwell [Wed, 18 Dec 2013 20:48:49 +0000 (20:48 +0000)]
chan_oss.c: channel being locked twice and unlocked once

Removed channel lock as it is now being down in ast_channel_alloc

Merged revisions 404261 from

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

9 years agochannel locking: Add locking for channel snapshot creation
Kevin Harwell [Wed, 18 Dec 2013 20:33:37 +0000 (20:33 +0000)]
channel locking: Add locking for channel snapshot creation

Original commit message by mmichelson (asterisk 12 r403311):

"This adds channel locks around calls to create channel snapshots as well
as other functions which operate on a channel and then end up
creating a channel snapshot. Functions that expect the channel to be
locked prior to being called have had their documentation updated to
indicate such."

The above was initially committed and then reverted at r403398.  The problem
was found to be in core_local.c in the publish_local_bridge_message function.
The ast_unreal_lock_all function locks and adds a reference to the returned
channels and while they were being unlocked they were not being unreffed when
no longer needed.  Fixed by unreffing the channels.

Also in bridge.c a lock was obtained on "other->chan", but then an attempt was
made to unlock "other" and not the previously locked channel.  Fixed by
unlocking "other->chan"

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

Merged revisions 404237 from

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

9 years agoIntroduce new config option 'aniasdni'. If yes then asterisk set dialed number as...
Alexandr Anikin [Wed, 18 Dec 2013 19:36:39 +0000 (19:36 +0000)]
Introduce new config option 'aniasdni'. If yes then asterisk set dialed number as own id back to the caller
on incoming h.323 calls. Option can be set globally or per user section.

(closes issue ASTERISK-22020)
Reported by: Ross Beer

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

9 years agochannels: Return allocated channels locked.
Joshua Colp [Wed, 18 Dec 2013 19:28:05 +0000 (19:28 +0000)]
channels: Return allocated channels locked.

This change makes ast_channel_alloc return allocated channels
locked. By doing so no other thread can acquire, lock, and manipulate
the channel before it is completely set up.

(closes issue AST-1256)


Merged revisions 404204 from

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

9 years agoImplement module reload command for chan_ooh323
Alexandr Anikin [Wed, 18 Dec 2013 19:10:42 +0000 (19:10 +0000)]
Implement module reload command for chan_ooh323

(close issue ASTERISK-22817)


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

9 years agoari: Bump the version of ARI to 1.0.0
Matthew Jordan [Wed, 18 Dec 2013 12:46:04 +0000 (12:46 +0000)]
ari: Bump the version of ARI to 1.0.0

(closes issue ASTERISK-23007)

Merged revisions 404184 from

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

9 years agores_calendar: Protect channel when adding datastore.
Joshua Colp [Wed, 18 Dec 2013 12:01:46 +0000 (12:01 +0000)]
res_calendar: Protect channel when adding datastore.

This change adds a missing channel lock when adding a datastore
to a channel.

Merged revisions 404135 from

Merged revisions 404136 from

Merged revisions 404137 from

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

9 years agofunc_strings: Documentation fix for QUOTE()
Rusty Newton [Wed, 18 Dec 2013 00:36:54 +0000 (00:36 +0000)]
func_strings: Documentation fix for QUOTE()

Example output was inaccurate.

(issue ASTERISK-22970)
(closes issue ASTERISK-22970)
Reported by: Gareth Palmer
   func_strings.patch uploaded by Gareth Palmer (license 5169)

Merged revisions 404081 from

Merged revisions 404087 from

Merged revisions 404099 from

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

9 years agoLICENSE: Update language to include ARI
Matthew Jordan [Wed, 18 Dec 2013 00:17:15 +0000 (00:17 +0000)]
LICENSE: Update language to include ARI

Merged revisions 404050 from

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

9 years agotests: fix ast_bridge_base_new calls not using the additional arguments
Jonathan Rose [Tue, 17 Dec 2013 23:57:52 +0000 (23:57 +0000)]
tests: fix ast_bridge_base_new calls not using the additional arguments

r404042 gave ast_bridge_base_new two new arguments for setting a bridge creator
and name. Unfortunately since a couple test modules aren't compiled by default,
I missed the fact that this change impacted those tests and caused compilation
failures against them.

Merged revisions 404048 from

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

9 years agoSeveral components: fixing Typos in comments and code, "avaliable" instead of "available"
Rusty Newton [Tue, 17 Dec 2013 23:38:02 +0000 (23:38 +0000)]
Several components: fixing Typos in comments and code, "avaliable" instead of "available"

(issue ASTERISK-23021)
(closes issue ASTERISK-23021)
Reported by: Jeremy Lainé
Tested by: Rusty Newton
   available.patch uploaded by Jeremy Lainé (license 6561)

Merged revisions 404046 from

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

9 years agobridging: Give bridges a name and a known creator
Jonathan Rose [Tue, 17 Dec 2013 23:25:49 +0000 (23:25 +0000)]
bridging: Give bridges a name and a known creator

Bridges have two new optional properties, a creator and a name.
Certain consumers of bridges will automatically provide bridges that
they create with these properties. Examples include app_bridgewait,
res_parking, app_confbridge, and app_agent_pool. In addition, a name
may now be provided as an argument to the POST function for creating
new bridges via ARI.

(closes issue AFS-47)

Merged revisions 404042 from

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

9 years agores_sorcery_config: Output an error message when an object can't be created.
Joshua Colp [Tue, 17 Dec 2013 18:35:39 +0000 (18:35 +0000)]
res_sorcery_config: Output an error message when an object can't be created.

If object creation fails an error message will now be output with the id, type,
and configuration file.

Merged revisions 404029 from

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

9 years agoframehooks: Re-iterate if framehook provides different frame.
Joshua Colp [Tue, 17 Dec 2013 18:26:09 +0000 (18:26 +0000)]
framehooks: Re-iterate if framehook provides different frame.

Framehooks can be used in a reactive manner to execute specific logic
when a frame is received with a certain type and payload. Since it is
possible for framehooks to provide frames it was possible for this
reactive framehook to be unaware of frames it is looking for.

This change makes it so that when framehooks return a modified frame
the code will now re-iterate (from the beginning) and call any
previous framehooks that have not provided a modified frame themselves.


Merged revisions 404027 from

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