6 years agochan_sip: be more tolerant of whitespace between attributes in SDP fmtp line
Matthew Jordan [Mon, 30 Jun 2014 03:27:00 +0000 (03:27 +0000)]
chan_sip: be more tolerant of whitespace between attributes in SDP fmtp line

This patch is essentially a backport of a small portion of r397526 from
ASTERISK-21981. In that patch, pass through support and format attribute
negotiation was added for Opus. Part of that included being more tolerant to
whitespace in the fmtp line of an SDP; that part of the patch is being
applied here.

As the author of the backport pointed out, in SDP, the fmtp line is allowed to
include whitespace between attributes. RFC 3267 chapter 8.3 (from 2001)
includes an example for this. This was not removed in the updated RFC 4867 in


#ASTERISK-23916 #close
Reported by: Alexander Traud
  sdpFMTPspace_Asterisk11.patch uploaded by Alexander Traud (License 6520)

Merged revisions 417587 from

Merged revisions 417588 from

Merged revisions 417589 from

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

6 years agoevent.c: Fix type mismatch errors in ie_maps[].
Richard Mudgett [Fri, 27 Jun 2014 23:21:44 +0000 (23:21 +0000)]
event.c: Fix type mismatch errors in ie_maps[].

In v12+ the type values from the table are only used by the CEL unit
tests.  Since the unit tests were only comparing a generated expected
event with a real event to see if the ie contents matched and using the
same table IE_PLTYPE values to read the event contents, the type
mismatches were not detected.

Merged revisions 417565 from

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

6 years agoEnsure REF_DEBUG records entrys for attempts to ao2_ref an invalid object
Corey Farrell [Fri, 27 Jun 2014 19:27:59 +0000 (19:27 +0000)]
Ensure REF_DEBUG records entrys for attempts to ao2_ref an invalid object

This change ensures that __ao2_ref_debug writes to ref_log when given a
non-NULL pointer to an invalid ao2 object.  This is to ensure that we
record any attempt manipulate references of already freed objects.

ASTERISK-23948 #close
Reported by: Corey Farrell

Merged revisions 417500 from

Merged revisions 417505 from

Merged revisions 417509 from

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

6 years prevent use of excessive RAM with large refs logs
Corey Farrell [Fri, 27 Jun 2014 19:18:32 +0000 (19:18 +0000)] prevent use of excessive RAM with large refs logs

When processing a 212MB refs file, used over 3GB of RAM.
This change greatly reduces memory usage in two ways:

* Saving object history in whole lines instead of separated values.
* Not saving normal/skewed/leaked object lists unless they are requested.

ASTERISK-23921 #close
Reported by: Corey Farrell

Merged revisions 417480 from

Merged revisions 417481 from

Merged revisions 417483 from

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

6 years agores_pjsip: Add ActionID to events created as a result of PJSIP AMI actions
Matthew Jordan [Fri, 27 Jun 2014 13:50:02 +0000 (13:50 +0000)]
res_pjsip: Add ActionID to events created as a result of PJSIP AMI actions

A number of various PJSIP AMI actions were failing to parse out and place the
ActionID into their responses. This patch updates the various PJSIP actions
such that the passed in ActionID is emitted on any event list complete events,
as well as any intermediate events created as a result of the action.

#ASTERISK-23947 #close
Reported by: Mark Michelson


Merged revisions 417460 from

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

6 years agoCEL: Update unit tests for bridge tech field
Kinsey Moore [Fri, 27 Jun 2014 02:04:50 +0000 (02:04 +0000)]
CEL: Update unit tests for bridge tech field

Update the CEL unit tests that handle BRIDGE_ENTER and BRIDGE_EXIT
events to expect the "bridge_technology" extra field key.

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

6 years agoCHANGES: Add missing changes
Kinsey Moore [Thu, 26 Jun 2014 19:15:10 +0000 (19:15 +0000)]
CHANGES: Add missing changes

Add missing CHANGES changes from r417361 and r417383.

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

6 years agores_http_websocket: Export symbol for ast_websocket_set_timeout
Matthew Jordan [Thu, 26 Jun 2014 18:27:53 +0000 (18:27 +0000)]
res_http_websocket: Export symbol for ast_websocket_set_timeout

Thanks to Sean Bright for pointing out that this was missed in #asterisk-dev.

Merged revisions 417419 from

Merged revisions 417420 from

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

6 years agochan_pjsip: Add a test event for fast picture updates
Matthew Jordan [Thu, 26 Jun 2014 17:17:25 +0000 (17:17 +0000)]
chan_pjsip: Add a test event for fast picture updates

This will drive the test on review r3419. Note that the patch for this was
done by Ben Ford, although it was slightly modified for this commit.

Reported by: Matt Jordan

Merged revisions 417399 from

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

6 years agoCEL: Add bridge tech to relevant CEL records
Kinsey Moore [Thu, 26 Jun 2014 14:48:21 +0000 (14:48 +0000)]
CEL: Add bridge tech to relevant CEL records

Add the "bridge_technology" extra field key to BRIDGE_ENTER and
BRIDGE_EXIT CEL events to convey the bridge technology in use at the
time the record was generated.

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

6 years agoBridging: Allow channels to define bridging hooks
Kinsey Moore [Thu, 26 Jun 2014 12:43:47 +0000 (12:43 +0000)]
Bridging: Allow channels to define bridging hooks

This patch allows the current owner of a channel to define various
feature hooks to be made available once the channel has entered a
bridge. This includes any hooks that are setup on the
ast_bridge_features struct such as DTMF hooks, bridge event hooks
(join, leave, etc.), and interval hooks.


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

6 years agoapp_jack: Support audio with a sampling rate higher than 8kHz
Matthew Jordan [Thu, 26 Jun 2014 12:43:05 +0000 (12:43 +0000)]
app_jack: Support audio with a sampling rate higher than 8kHz

This patch enables the jack-audiohook to cope with dynamic sampling rates from
and to Asterisk. Information from the channel is taken to derive the channel's
sampling rate, suiting SLINxx format and frame->datalen.

There are stil a few limitations after this patch:
* Required information is taken from the channel during initialization as
  the audiohook does not provide this information.
  Audiohook.internal_sampl_rate(...) is set later, but no callback is available
  to inform app_jack.

* Frame.datalen is computed using "rate / 50" assuming a ptime of 20ms.
  There is no internal API available to determine datalen for a SLINxx.

* Ringbuffer size is now dynamic depending on the value of frame.datalen
  (see above) and the number of frames, which are in RINGBUFFER_FRAME_CAPACITY,
  that need to fit.


Note that the patch being committed here is based on the patch posted on
ASTERISK-23836. However, Matthis Schmieder also provided a patch to enable
this functionality, and that patch is noted below.

ASTERISK-20696 #close
Reported by: Matthis Schmieder
  app_jack.patch uploaded by Matthis Schmieder (License 6445)

ASTERISK-23836 #close
Reported by: Dennis Guse
  patch-app_jack.c uploaded by Dennis Guse (License 6513)

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

6 years agoudptl: Correct FEC to not consider negative sequence numbers as missing
Matthew Jordan [Thu, 26 Jun 2014 12:24:25 +0000 (12:24 +0000)]
udptl: Correct FEC to not consider negative sequence numbers as missing

When using FEC, with span=3 and entries=4 Asterisk will attempt to repair
the packet with sequence number 5, as it will see that packet -4 is
missing. The result is Asterisk sending garbage packets that can kill a

This patch adds a check to see if the sequence number is valid before
checking if the packet is missing.


#ASTERISK-23908 #close
Reported by: Torrey Searle
  udptl_fec.patch uploaded by Torrey Searle (License 5334)

Merged revisions 417318 from

Merged revisions 417320 from

Merged revisions 417324 from

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

6 years agores_http_websocket: Close websocket correctly and use careful fwrite
Matthew Jordan [Thu, 26 Jun 2014 12:21:14 +0000 (12:21 +0000)]
res_http_websocket: Close websocket correctly and use careful fwrite

When a client takes a long time to process information received from Asterisk,
a write operation using fwrite may fail to write all information. This causes
the underlying file stream to be in an unknown state, such that the socket
must be disconnected. Unfortunately, there are two problems with this in
Asterisk's existing websocket code:
1. Periodically, during the read loop, Asterisk must write to the connected
   websocket to respond to pings. As such, Asterisk maintains a reference to
   the session during the loop. When ast_http_websocket_write fails, it may
   cause the session to decrement its ref count, but this in and of itself
   does not break the read loop. The read loop's write, on the other hand,
   does not break the loop if it fails. This causes the socket to get in a
   'stuck' state, preventing the client from reconnecting to the server.
2. More importantly, however, is that the fwrite in ast_http_websocket_write
   fails with a large volume of data when the client takes awhile to process
   the information. When it does fail, it fails writing only a portion of
   the bytes. With some debugging, it was shown that this was failing in a
   similar fashion to ASTERISK-12767. Switching this over to ast_careful_fwrite
   with a long enough timeout solved the problem.

Note that this version of the patch, unlike r417310 in Asterisk 11, exposes
configuration options beyond just chan_sip's sip.conf. Configuration options
to configure the write timeout have also been added to pjsip.conf and ari.conf.

#ASTERISK-23917 #close
Reported by: Matt Jordan


Merged revisions 417310 from

Merged revisions 417311 from

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

6 years agochan_sip: Fix handling of "From" headers longer than 256 characters
Corey Farrell [Thu, 26 Jun 2014 10:06:13 +0000 (10:06 +0000)]
chan_sip: Fix handling of "From" headers longer than 256 characters

From headers were processed using a 256 character buffer on the stack.
This change replaces that with a heap allocation by ast_strdup.

ASTERISK-23790 #close
Reported by: uniken1
Tested by: uniken1
    chan_sip-large-from-header-1.8-r3.patch uploaded by wdoekes (license 5674)

Merged revisions 417248 from

Merged revisions 417249 from

Merged revisions 417250 from

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

6 years agoAbstract PJSIP-specific elements from the pubsub API.
Mark Michelson [Wed, 25 Jun 2014 20:57:28 +0000 (20:57 +0000)]
Abstract PJSIP-specific elements from the pubsub API.

This helps to pave the way for RLS work that is to come.
Since this is a self-contained change and subscription
tests still pass, this work is being committed directly
to trunk instead of a working branch.

ASTERISK-23865 #close

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

6 years agoao2_container node object ignores REF_DEBUG in all places except one
Corey Farrell [Wed, 25 Jun 2014 18:57:04 +0000 (18:57 +0000)]
ao2_container node object ignores REF_DEBUG in all places except one

Almost every reference operation against container node's uses
__ao2_alloc or __ao2_ref, thereby preventing ref logging for
the nodes.  One node reference is released with ao2_t_ref, causing to falsely report skews and leaks for many nodes.

ASTERISK-23922 #close
Reported by: Corey Farrell

Merged revisions 417212 from

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

6 years agoSkinny: cleanup some log messages around sessions.
Damien Wedhorn [Wed, 25 Jun 2014 00:45:07 +0000 (00:45 +0000)]
Skinny: cleanup some log messages around sessions.

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

6 years agoMove eid functions to utils.c, mark netsock.h deprecated
Corey Farrell [Tue, 24 Jun 2014 02:50:15 +0000 (02:50 +0000)]
Move eid functions to utils.c, mark netsock.h deprecated

Move eid functions from netsock.c to utils.c.  These functions were
already published by utils.h.  Flag netsock.h as deprecated and switch
res_pjsip_session.h to use netsock2.h.  The only code that still uses
netsock.h is chan_iax2.

ASTERISK-23920 #close
Reported by: Corey Farrell

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

6 years agores_rtp_asterisk: Return the length of data written when sending via ICE instead...
Joshua Colp [Mon, 23 Jun 2014 18:50:18 +0000 (18:50 +0000)]
res_rtp_asterisk: Return the length of data written when sending via ICE instead of 0.

ASTERISK-23834 #close
Reported by: Richard Kenner

Merged revisions 417141 from

Merged revisions 417142 from

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

6 years agocore_unreal: Fix off by one buffer overwrite error.
Richard Mudgett [Mon, 23 Jun 2014 16:04:33 +0000 (16:04 +0000)]
core_unreal: Fix off by one buffer overwrite error.

Appending the ;2 to the user supplied ;1 uniqueid to create the ;2 version
if the user did not also supply an extra uniqueid for the ;2 channel
resulted in allocating a buffer that was one byte too small.

* Fix off by one error in ast_unreal_new_channels() when generating the ;2
uniqueid from the user suppled ;1 version.

* Pulled some long assignment lines from if tests to improve line break
readability in ast_unreal_new_channels().

Merged revisions 417119 from

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

6 years agosuspended destructions of pri spans on events
Tzafrir Cohen [Mon, 23 Jun 2014 07:44:19 +0000 (07:44 +0000)]
suspended destructions of pri spans on events

If a DAHDI span disappears, we wish for its representation in Asterisk
to be destroyed as well.

The information about the span's removal may come from several paths:

1. DAHDI sends DAHDI_EVENT_REMOVE on every channel.
2. An extra DAHDI_EVENT_REMOVED is sent on every subsequent call to
3. Every read (including the internal one by libpri on the D-channel)
   returns -ENODEV.

Asterisk responsds to DAHDI_EVENT_REMOVE on a channel by destroying it.

Destroying a channel requires holding the channel list lock (iflock).
Destroying a channel that is part of a span requires holding the span's
lock. Destroying a channel from a context that holds the span lock,
while at the same time another channel is destroyed directly, leads to a
deadlock. Solution: don't destroy span while holding the channels list

Thus changes in this patch:
* Deferring removal of PRI spans in response to events: doomed spans
  are collected on a list.
* Doomed spans are removed periodically by the monitor thread.
* ENODEV reads from the D-channel will warant the same deferred removal.


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

6 years agoastobj2: Add an ao2_replace macro to astobj2.h
George Joseph [Sun, 22 Jun 2014 18:53:26 +0000 (18:53 +0000)]
astobj2: Add an ao2_replace macro to astobj2.h

This macro replaces one object reference with another cleaning up the original.

param dst Pointer to the object that will be cleaned up.
param src Pointer to the object replacing it.

src's ref count is bumped if it's non-NULL.
dst's ref count is decremented if it's non-NULL.
src is assigned to dst,

This patch was reviewed on IRC by coreyfarrell and mjordan.

Tested by: George Joseph

Merged revisions 416995 from

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

6 years agobuild: Allow autoconf/ast_ext_tool_check to handle cross-compiling better.
George Joseph [Fri, 20 Jun 2014 23:18:36 +0000 (23:18 +0000)]
build: Allow autoconf/ast_ext_tool_check to handle cross-compiling better.

ast_ext_tool_check.m4 isn't handling cases where a path to a package is
provided (E.G. --with-mysqlclient=/some/sysroot) and the package has a config
tool (E.G. mysql_config) and the package has its own subdirectories in include
or lib.  For example, mysql's libraries are in ${MYSQLCLIENT_DIR}/usr/lib/mysql
but ast_ext_tool_check sets MYSQLCLIENT_LIB to ${MYSQLCLIENT_DIR}/usr/lib.
libxml2 has the same problem with its includes.  They're in
${LIBXML2_DIR}/usr/include/libxml2 not directly in ${LIBXML2_DIR}/usr/include.
Both cause configure to fail and there are others in the same boat.

The problem is caused by logic in ast_ext_tool_check that overrides the result
of the config tool's --cflags and --libs options if package_DIR is set.

This patch prepends package_DIR (if specified) to the -L and -I results from
the package's config tool instead of overriding them.

A regenerated ./configure and include/asterisk/ are included
but can be regenerated by running ./ at any time.

Tested by: George Joseph
Tested by: Matt Jordan

Merged revisions 416929 from

Merged revisions 416930 from

Merged revisions 416931 from

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

6 years agobuild: Allow autoconf/ast_ext_tool_check to handle cross-compiling better.
George Joseph [Fri, 20 Jun 2014 21:59:08 +0000 (21:59 +0000)]
build: Allow autoconf/ast_ext_tool_check to handle cross-compiling better.

ast_ext_tool_check.m4 isn't handling cases where a path to a package is
provided (E.G. --with-mysqlclient=/some/sysroot) and the package has a config
tool (E.G. mysql_config) and the package has its own subdirectories in include
or lib.  For example, mysql's libraries are in ${MYSQLCLIENT_DIR}/usr/lib/mysql
but ast_ext_tool_check sets MYSQLCLIENT_LIB to ${MYSQLCLIENT_DIR}/usr/lib.
libxml2 has the same problem with its includes.  They're in
${LIBXML2_DIR}/usr/include/libxml2 not directly in ${LIBXML2_DIR}/usr/include.
Both cause configure to fail and there are others in the same boat.

The problem is caused by logic in ast_ext_tool_check that overrides the result
of the config tool's --cflags and --libs options if package_DIR is set.

This patch prepends package_DIR (if specified) to the -L and -I results from
the package's config tool instead of overriding them.

Tested by: George Joseph
Tested by: Matt Jordan

Merged revisions 416870 from

Merged revisions 416871 from

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

6 years agores_parking: Make manager commands register with module information
Jonathan Rose [Fri, 20 Jun 2014 20:57:46 +0000 (20:57 +0000)]
res_parking: Make manager commands register with module information

Previously module information was not included due to an oversight.


Merged revisions 416849 from

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

6 years agoLogger: Add manager command 'LoggerRotate' to rotate logger
Jonathan Rose [Fri, 20 Jun 2014 20:29:45 +0000 (20:29 +0000)]
Logger: Add manager command 'LoggerRotate' to rotate logger

Part of a series of AMI command equivalents to existing CLI


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

6 years agovoicemail API callbacks: Extract the sayname API call to its own registerd callback.
Richard Mudgett [Fri, 20 Jun 2014 17:06:42 +0000 (17:06 +0000)]
voicemail API callbacks: Extract the sayname API call to its own registerd callback.

* Extract the sayname API call to its own registerd callback.  This allows
the app_directory and app_chanspy applications to say a mailbox owner's
name using an alternate provider when app_voicemail is not available
because you are using res_mwi_external.  app_directory still uses the
voicemail.conf file.

AFS-64 #close
Reported by: Mark Michelson

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

6 years agoastobj2: Additional refactoring to push impl specific code down into the impls.
George Joseph [Fri, 20 Jun 2014 15:27:43 +0000 (15:27 +0000)]
astobj2: Additional refactoring to push impl specific code down into the impls.

Move some implementation specific code from astobj2_container.c into
astobj2_hash.c and astobj2_rbtree.c.  This completely removes the need for
astobj2_container to switch on RTTI and it no longer has any knowledge of
the implementation details.

Also adds AO2_DEBUG as a new compile option in menuselect which controls
astobj2 debugging independently of AST_DEVMODE and REF_DEBUG.

Tested by: George Joseph

Merged revisions 416806 from

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

6 years agopjsip cli: Change Identify to show CIDR notation instead of netmasks.
George Joseph [Thu, 19 Jun 2014 20:13:20 +0000 (20:13 +0000)]
pjsip cli: Change Identify to show CIDR notation instead of netmasks.

* Added ast_sockaddr_cidr_bits() to count the 1 bits in an ast_sockaddr.
* Added ast_ha_join_cidr() which uses ast_sockaddr_cidr_bits() for the netmask
  instead of ast_sockaddr_stringify_addr.
* Changed res_pjsip_endpoint_identifier_ip to call ast_ha_join_cidr() instead
  of ast_ha_join() for the CLI output.

This is a CLI change only.  AMI was not affected.

Tested by: George Joseph

Merged revisions 416737 from

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

6 years agoFix build warnings with TEST_FRAMEWORK enabled
Kinsey Moore [Thu, 19 Jun 2014 19:40:45 +0000 (19:40 +0000)]
Fix build warnings with TEST_FRAMEWORK enabled

Merged revisions 416732 from

Merged revisions 416733 from

Merged revisions 416734 from

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

6 years agoRemove the problematic and unneeded AST_MODFLAG_GLOBAL_SYMBOLS from pbx_lua.c
George Joseph [Thu, 19 Jun 2014 16:04:36 +0000 (16:04 +0000)]
Remove the problematic and unneeded AST_MODFLAG_GLOBAL_SYMBOLS from pbx_lua.c

AST_MODFLAG_GLOBAL_SYMBOLS was causing the module to be incorrectly loaded
before pbx_config.  pbx_config was therefore blowing away contexts that were
created by pbx_lua.  With AST_MODFLAG_DEFAULT the load order is now correct
and contexs are being properly merged.  AST_MODFLAG_GLOBAL_SYMBOLS was not
needed anyway since no other modules needed its global symbols that early.

ASTERISK-23818 #close
Reported by: Dennis Guse
Tested by: Dennis Guse
Tested by: George Joseph


Merged revisions 416668 from

Merged revisions 416669 from

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

6 years agoUpdate extensions.lua.sample with naming conflict guidance.
George Joseph [Wed, 18 Jun 2014 17:20:13 +0000 (17:20 +0000)]
Update extensions.lua.sample with naming conflict guidance.

The sample extensions.lua was causing pbx_lua to fail to load when parsing
'app.goto("default", "s", 1)' because in Lua 5.2, 'goto' is now a reserved
word.  This patch adds guidance to extensions.lua.sample and changed
'app.goto("default", "s", 1)' to 'app.['goto']("default", "s", 1)'.

ASTERISK-23844 #close
Reported by: rnewton
Tested by: gtjoseph


Merged revisions 416581 from

Merged revisions 416582 from

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

6 years agostasis_channels: Update the stasis cache if manager variables are needed
Matthew Jordan [Wed, 18 Jun 2014 04:22:05 +0000 (04:22 +0000)]
stasis_channels: Update the stasis cache if manager variables are needed

In r416211, the publishing of variable changes was modified such that a
cached channel snapshot was used if manager variables were not requested
with each AMI event. This was done to reduce the amount of channel snapshots

However, an assumption was made that generating a channel snapshot and
publishing the snapshot to the channel topic was sufficient to ensure that
the cache would be updated; this is not the case. The channel snapshot type
must be used to force a snapshot update.

This patch updates the publication of channel variables such that the cache
is updated prior to publication of the channel variable message if manager
variables are in use. This ensures that all AMI events receive the variable
update when they are supposed to.

Note that this issue was caught by the Asterisk Test Suite (go go testing)

Merged revisions 416557 from

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

6 years agoAllow the PUSH and UNSHIFT functions to set inheritable channel variables.
Mark Michelson [Tue, 17 Jun 2014 18:45:11 +0000 (18:45 +0000)]
Allow the PUSH and UNSHIFT functions to set inheritable channel variables.

Merged revisions 416500 from

Merged revisions 416501 from

Merged revisions 416502 from

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

6 years agoFix string growth algorithm for XML presence bodies.
Mark Michelson [Tue, 17 Jun 2014 16:35:04 +0000 (16:35 +0000)]
Fix string growth algorithm for XML presence bodies.

pjpidf_print() does not return < 0 if there is not enough
room for the document to be printed. Rather, it returns
39, the length of the XML prolog.

The algorithm also had a bug in that it would return if
it attempted to grow the string larger.

Merged revisions 416442 from

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

6 years agoMoH: Don't restart stream on repeated start calls
Kinsey Moore [Tue, 17 Jun 2014 16:33:53 +0000 (16:33 +0000)]
MoH: Don't restart stream on repeated start calls

Currently, music on hold will stop and then start again from the
beginning if ast_moh_start() is called multiple times. This can happen
if a call is put on hold repeatedly (the channel receives multiple
HOLD control frames) and can be triggered from ARI by starting MoH on a
channel multiple times. This is fairly jarring/annoying to users.

This change prevents MoH from being restarted if the requested music
class is the same as the one currently playing.

This includes an extra check to prevent the errors previously
experienced in the testsuite and has 100+ test runs behind it.


Merged revisions 416439 from

Merged revisions 416440 from

Merged revisions 416441 from

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

6 years agochan_dahdi: Adds support for major update to libss7.
Richard Mudgett [Mon, 16 Jun 2014 18:27:51 +0000 (18:27 +0000)]
chan_dahdi: Adds support for major update to libss7.

* SS7 support now requires libss7 v2.0 or later.  The new libss7 is not
backwards compatible.

* Added SS7 support for connected line and redirecting.

* Most SS7 CLI commands are reworked as well as new SS7 commands added.
See online CLI help.

* Added several SS7 config option parameters described in

* ISUP timer support reworked and now requires explicit configuration.
See ss7.timers.sample.

Special thanks to Kaloyan Kovachev for his support and persistence in
getting the original patch by adomjan updated and ready for release.

SS7-27 #close
Reported by: adomjan

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

6 years agores_http_websocket: read/write string fixup
Kevin Harwell [Mon, 16 Jun 2014 16:22:33 +0000 (16:22 +0000)]
res_http_websocket: read/write string fixup

There was a problem when reading a string from the websocket. It assumed the
received data had a null terminator and tried to write the data to an ast_str.
This of course could/would read past the end of the given buffer while
writing the data to the internal buffer of ast_str. Modified the the code to
correctly place a null terminator on the result string.

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

6 years agoWe have faced situation when using CDR and CEL by sqlite3 modules. With system having...
Igor Goncharovskiy [Mon, 16 Jun 2014 09:04:05 +0000 (09:04 +0000)]
We have faced situation when using CDR and CEL by sqlite3 modules. With system having high load (~100 concurrent calls created by sipp) we found many cdr and cel records missed. There is special finction in sqlite3, that make able to fix this situation - sqlite3_wait_timeout, that also can replace awful code cdr_sqlite3 ad cel_sqlite3 modules. Also this function can be used for aastdb and res_config_sqlite3 to avoid missed writes to sqlite db.

#ASTERISK-23766 #close
Reported by: Igor Goncharovsky


Merged revisions 416336 from

Merged revisions 416337 from

Merged revisions 416338 from

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

6 years agochannels/chan_sip: Forbid remote bridging if T.38 is negotiated
Matthew Jordan [Mon, 16 Jun 2014 02:40:44 +0000 (02:40 +0000)]
channels/chan_sip: Forbid remote bridging if T.38 is negotiated

When a framehook is removed - such as the fax gateway framehook - the bridge
framework will re-evaluate the bridge mixing technologies to see if it can
improve the bridging. When this occurs, get_rtp_info will be called to
determine if local or remote bridging can be used. Using remote bridging
will cause a fax to fail, as direct media negotiation will cause some small
number of packets to not arrive at the remote endpoint.

This patch forces local native bridging if T.38 negotiation is in progress or
has been established.

Merged revisions 416318 from

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

6 years agochannel_internal_api: Publish a snapshot change when linkedids change
Matthew Jordan [Sun, 15 Jun 2014 22:12:49 +0000 (22:12 +0000)]
channel_internal_api: Publish a snapshot change when linkedids change

Snapshots are now not published *quite* as much as they used to. One instance
where they are not published any longer is during bridge enter and exit - the
state of the channel doesn't change, the bridge does. However, channels are
changed when a linkedid is propagated; previously, the channel's state would
be updated and published during the bridge enter event. Now this must be
explicitly done.

Merged revisions 416300 from

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

6 years agotest_stasis_endpoints: Remove expected channel snapshot
Matthew Jordan [Sun, 15 Jun 2014 21:42:45 +0000 (21:42 +0000)]
test_stasis_endpoints: Remove expected channel snapshot

We no longer publish a channel snapshot when it is associated with an endpoint;
after all, the channel itself hasn't changed - the endpoint state has changed.
This updates the channel_messages unit test accordingly.

Merged revisions 416298 from

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

6 years agoMoH: Undo commit r416150 (1.8)
Matthew Jordan [Sun, 15 Jun 2014 21:24:04 +0000 (21:24 +0000)]
MoH: Undo commit r416150 (1.8)

This patch reverts r416150. When the comparison between mohclass->name and
state->class->name is made, you are not guaranteed that (a) state->class is
non-NULL or that state or state->class are in a safe state.

Crashes caught by the bridges/transfer_capabilities test.

Merged revisions 416251 from

Merged revisions 416252 from

Merged revisions 416255 from

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

6 years agores_manager_devicestate and res_manager_presencestate missing support level
Corey Farrell [Sat, 14 Jun 2014 19:26:16 +0000 (19:26 +0000)]
res_manager_devicestate and res_manager_presencestate missing support level

Add MODULEINFO comment block to define support level core for these new


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

6 years agostasis: Reduce creation of channel snapshots to improve performance
Matthew Jordan [Fri, 13 Jun 2014 18:24:49 +0000 (18:24 +0000)]
stasis: Reduce creation of channel snapshots to improve performance

During some performance testing of Asterisk with AGI, ARI, and lots of Local
channels, we noticed that there's quite a hit in performance during channel
creation and releasing to the dialplan (ARI continue). After investigating
the performance spike that occurs during channel creation, we discovered
that we create a lot of channel snapshots that are technically unnecessary.
This includes creating snapshots during:
 * AGI execution
 * Returning objects for ARI commands
 * During some Local channel operations
 * During some dialling operations
 * During variable setting
 * During some bridging operations
And more.

This patch does the following:
 - It removes a number of fields from channel snapshots. These fields were
   rarely used, were expensive to have on the snapshot, and hurt performance.
   This included formats, translation paths, Log Call ID, callgroup, pickup
   group, and all channel variables. As a result, AMI Status,
   "core show channel", "core show channelvar", and "pjsip show channel" were
   modified to either hit the live channel or not show certain pieces of data.
   While this is unfortunate, the performance gain from this patch is worth
   the loss in behaviour.
 - It adds a mechanism to publish a cached snapshot + blob. A large number of
   publications were changed to use this, including:
   - During Dial begin
   - During Variable assignment (if no AMI variables are emitted - if AMI
     variables are set, we have to make snapshots when a variable is changed)
   - During channel pickup
   - When a channel is put on hold/unhold
   - When a DTMF digit is begun/ended
   - When creating a bridge snapshot
   - When an AOC event is raised
   - During Local channel optimization/Local bridging
   - When endpoint snapshots are generated
   - All AGI events
   - All ARI responses that return a channel
   - Events in the AgentPool, MeetMe, and some in Queue
 - Additionally, some extraneous channel snapshots were being made that were
   unnecessary. These were removed.
 - The result of ast_hashtab_hash_string is now cached in stasis_cache. This
   reduces a large number of calls to ast_hashtab_hash_string, which reduced
   the amount of time spent in this function in gprof by around 50%.

#ASTERISK-23811 #close
Reported by: Matt Jordan


Merged revisions 416211 from

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

6 years agoMoH: Don't restart stream on repeated start calls
Kinsey Moore [Fri, 13 Jun 2014 13:11:38 +0000 (13:11 +0000)]
MoH: Don't restart stream on repeated start calls

Currently, music on hold will stop and then start again from the
beginning if ast_moh_start() is called multiple times. This can happen
if a call is put on hold repeatedly (the channel receives multiple
HOLD control frames) and can be triggered from ARI by starting MoH on a
channel multiple times. This is fairly jarring/annoying to users.

This change prevents MoH from being restarted if the requested music
class is the same as the one currently playing.


Merged revisions 416150 from

Merged revisions 416151 from

Merged revisions 416152 from

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

6 years agoCEL: Expose parking retreiver in extra field
Kinsey Moore [Fri, 13 Jun 2014 12:56:06 +0000 (12:56 +0000)]
CEL: Expose parking retreiver in extra field

This exposes the retreiver of a parked call under the "retreiver" key
of the extra field when this information is available.


Merged revisions 416148 from

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

6 years agoAST-2014-007: Fix of fix to allow AMI and SIP TCP to send messages.
Richard Mudgett [Fri, 13 Jun 2014 05:16:34 +0000 (05:16 +0000)]
AST-2014-007: Fix of fix to allow AMI and SIP TCP to send messages.

ASTERISK-23673 #close
Reported by: Richard Mudgett


Merged revisions 416066 from

Merged revisions 416067 from

Merged revisions 416070 from

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

6 years agomain/pbx - documentation - enhance 'core show hints' and 'core show hint' help text
Rusty Newton [Thu, 12 Jun 2014 21:27:02 +0000 (21:27 +0000)]
main/pbx - documentation - enhance 'core show hints' and 'core show hint' help text

Adds descriptive help text to 'core show hints' and 'core show hint'. The text describes the various columns for the sake of clarity. It takes into account recent changes to the content displayed by the commands and


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

6 years agoFix build in devmode for GCC 4.10
Kinsey Moore [Thu, 12 Jun 2014 20:17:37 +0000 (20:17 +0000)]
Fix build in devmode for GCC 4.10

Merged revisions 415980 from

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

6 years agoAST-2014-007: Fix DOS by consuming the number of allowed HTTP connections.
Richard Mudgett [Thu, 12 Jun 2014 17:00:08 +0000 (17:00 +0000)]
AST-2014-007: Fix DOS by consuming the number of allowed HTTP connections.

Simply establishing a TCP connection and never sending anything to the
configured HTTP port in http.conf will tie up a HTTP connection.  Since
there is a maximum number of open HTTP sessions allowed at a time you can
block legitimate connections.

A similar problem exists if a HTTP request is started but never finished.

* Added http.conf session_inactivity timer option to close HTTP
connections that aren't doing anything.  Defaults to 30000 ms.

* Removed the undocumented manager.conf block-sockets option.  It
interferes with TCP/TLS inactivity timeouts.

* AMI and SIP TLS connections now have better authentication timeout
protection.  Though I didn't remove the bizzare TLS timeout polling code
from chan_sip.

* chan_sip can now handle SSL certificate renegotiations in the middle of
a session.  It couldn't do that before because the socket was non-blocking
and the SSL calls were not restarted as documented by the OpenSSL

* Fixed an off nominal leak of the ssl struct in
handle_tcptls_connection() if the FILE stream failed to open and the SSL
certificate negotiations failed.

The patch creates a custom FILE stream handler to give the created FILE
streams inactivity timeout and timeout after a specific moment in time
capability.  This approach eliminates the need for code using the FILE
stream to be redesigned to deal with the timeouts.

This patch indirectly fixes most of ASTERISK-18345 by fixing the usage of
the SSL_read/SSL_write operations.

ASTERISK-23673 #close
Reported by: Richard Mudgett

Merged revisions 415841 from

Merged revisions 415854 from

Merged revisions 415896 from

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

6 years agoBlocked revisions 415838
Jonathan Rose [Thu, 12 Jun 2014 15:52:20 +0000 (15:52 +0000)]
Blocked revisions 415838

Correct UPGRADE.txt notes in r415825

The change was marked against the wrong version of Asterisk. My apologies.

Merged revisions 415837 from

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

6 years agoapp_queue: delayed state can cause early leavewhenempty ringing
Scott Griepentrog [Thu, 12 Jun 2014 15:50:48 +0000 (15:50 +0000)]
app_queue: delayed state can cause early leavewhenempty ringing

In app_queue, device state changes arrive in event messages and
update the queue member status value.  That value is checked in
get_member_status() to decide that the caller should leave when
there are no available members.  Although event messages can be
delayed by other activity, there is no adverse affect by lagged
status except in one specific case: there is only one available
member, it was just rung, and leavewhenempty is enabled set for
ringing members.  This change adds a direct check of the device
state only under this condition where the caller may be dropped
incorrectly, resolving this issue without affecting performance
of app_queue normally.

AST-1248 #close
Reported by: Thomas Arimont

Merged revisions 415833 from

Merged revisions 415835 from

Merged revisions 415836 from

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

6 years agoMixMontior: Add class authorization requirements to MixMonitor AMI commands
Jonathan Rose [Thu, 12 Jun 2014 15:39:52 +0000 (15:39 +0000)]
MixMontior: Add class authorization requirements to MixMonitor AMI commands

MixMonitor AMI commands StartMixMonitor and StopMixMonitor lacked class
authorization. StopMixMonitor now requires that the manager user either have
the call or system class authorization. StartMixMonitor is a slightly larger
issue since it can execute shell commands if the right arguments are passed
into it, and we consider this a permission escalation. A security release
will be issued for problem this shortly.

ASTERISK-23609 #close
Reported by: Corey Farrell


Merged revisions 415825 from

Merged revisions 415832 from

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

6 years agores_pjsip_pubsub: unauthenticated remote crash in PJSIP pub/sub framework
Kevin Harwell [Thu, 12 Jun 2014 14:39:29 +0000 (14:39 +0000)]
res_pjsip_pubsub: unauthenticated remote crash in PJSIP pub/sub framework

A remotely exploitable crash vulnerability exists in the PJSIP channel driver's
pub/sub framework. If an attempt is made to unsubscribe when not currently
subscribed and the endpoint's "sub_min_expiry" is set to zero, Asterisk tries
to create an expiration timer with zero seconds, which is not allowed, so an
assertion raised.

The fix was to reject a subscription that is attempting to unsubscribe when not
being already subscribed.  Asterisk now checks for this situation appropriately
and responds with a 400 instead of crashing.


ASTERISK-23489 #close

Merged revisions 415812 from

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

6 years agoFix potential deadlock situation in res_pjsip.
Mark Michelson [Thu, 12 Jun 2014 14:15:51 +0000 (14:15 +0000)]
Fix potential deadlock situation in res_pjsip.

SIP transaction timeouts are handled in the PJSIP monitor thread. When
this happens on a subscription, and the subscription is destroyed, the
subscription destruction is dispatched synchronously to the threadpool.
The issue is that the PJSIP dialog is locked by the monitor thread,
and then the dispatched task attempts to lock the dialog. This leads
to a deadlock that causes SIP traffic to no longer be accepted on the
Asterisk server.

The fix here is to treat the monitor thread as if it were a threadpool
thread when it attempts to dispatch synchronous tasks. This way, the
dispatched task turns into a simple function call within the same thread,
and the locking issue is averted.


ASTERISK-23802 #close

Merged revisions 415794 from

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

6 years agores_pjsip_pubsub: Persist subscriptions in sorcery so they are recreated on startup.
Joshua Colp [Thu, 12 Jun 2014 11:34:36 +0000 (11:34 +0000)]
res_pjsip_pubsub: Persist subscriptions in sorcery so they are recreated on startup.

This change makes res_pjsip_pubsub persist inbound subscriptions in sorcery. By default
this uses the local astdb but it can also be configured to store within an outside
database. When Asterisk is started these subscriptions are recreated if they have not
expired. Notifications are sent to the devices which have subscribed and they are none
the wiser that the system has restarted.


Merged revisions 415766 from

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

6 years agosafe_asterisk: Overwrite old safe_asterisk on make install.
Walter Doekes [Thu, 12 Jun 2014 07:52:59 +0000 (07:52 +0000)]
safe_asterisk: Overwrite old safe_asterisk on make install.

From now on, make install will overwrite safe_asterisk with the
latest version. You need to move any local modifications to files
inside /etc/asterisk/startup.d, if you have any.

See also commits r394939 and r397938.

ASTERISK-21965 #close
  safe_asterisk.patch uploaded by jkister (License 6232, modified by me)

Merged revisions 415748 from

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

6 years agoformat.c: Fix misuse of hash container function.
Richard Mudgett [Wed, 11 Jun 2014 23:01:19 +0000 (23:01 +0000)]
format.c: Fix misuse of hash container function.

The supplied hash function to a container must be idempotent given the
object's key value to figure out which container bucket the object belongs
in.  Returning a random number or the current container count is not
idempotent.  The "computed hash" value doesn't help find the object later
in those cases.

* Fixed the format_list container to actually be a list since that is how
the container is used.  Conceptually, if more than 283 formats were added
to the format_list then odd things may have happened before the fix.

Merged revisions 415728 from

Merged revisions 415729 from

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

6 years agoCLI: correct presence information on core show hints
Scott Griepentrog [Wed, 11 Jun 2014 20:22:23 +0000 (20:22 +0000)]
CLI: correct presence information on core show hints

Adds presence to core show hint and changes presence
string conversion to use the correct function.

ASTERISK-23858 #close

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

6 years agoCLI: add presence information to core show hints
Scott Griepentrog [Tue, 10 Jun 2014 22:31:04 +0000 (22:31 +0000)]
CLI: add presence information to core show hints

Adds presence state value to output of core show
hints.  Also reformats the output slightly so it
doesn't use as much space as it would otherwise.

                   1000@demo                : SIP/1000              State:Unavailable     Watchers  0

1000@demo           : SIP/1000              State:Unavailable     Presence:Idle            Watchers  0

AFS-53 #close

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

6 years agoFix build in dev mode due to signed/unsigned mismatch
Kinsey Moore [Tue, 10 Jun 2014 18:32:12 +0000 (18:32 +0000)]
Fix build in dev mode due to signed/unsigned mismatch

Merged revisions 415678 from

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

6 years agoPJSIP: PJSIPNotify - Strip content-length headers and add documentation
Jonathan Rose [Tue, 10 Jun 2014 16:06:12 +0000 (16:06 +0000)]
PJSIP: PJSIPNotify - Strip content-length headers and add documentation

Documentation for how to add custom headers/content to notifies created
with the PJSIPNotify manager action was a little sparse and it also
wasn't vetting application of Content-length headers like its chan_sip
equivalent was (so two Content-length headers could be applied... and
PJSIP determines the content length anyway, so it just opens people up
for error). This patch also flips the variable order so that the
variables are interpreted in the same order as they are put in the AMI


Merged revisions 415658 from

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

6 years agochan_ooh323: fix loading module failure if there no accessible h323_log or ooh323...
Alexandr Anikin [Tue, 10 Jun 2014 09:28:55 +0000 (09:28 +0000)]
chan_ooh323: fix loading module failure if there no accessible h323_log or ooh323 config file

change return 1 to return AST_MODULE_LOAD_FAILURE on module load routine
few cosmetic changes

ASTERISK-23814 #close

(closes issue ASTERISK-23814)

Reported by: Igor Goncharovsky

Merged revisions 415599 from

Merged revisions 415602 from

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

6 years agochan_pjsip: Fix bug where custom SIP headers could be duplicated on outgoing INVITEs.
Mark Michelson [Mon, 9 Jun 2014 20:21:42 +0000 (20:21 +0000)]
chan_pjsip: Fix bug where custom SIP headers could be duplicated on outgoing INVITEs.

When using PJSIP_HEADER() to add custom headers to outgoing INVITE requests, certain
situations could result in the headers being duplicated. For instance, if the request
were retransmitted, or if the INVITE were re-sent with authentication credentials,
the custom headers would be re-added to the request.

The fix here is to, after adding the custom headers to the outbound INVITE, remove
the datastore that holds the custom headers to add. This way, there is no risk in
accidentally adding them if the session supplement is called into a second or third

Merged revisions 415579 from

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

6 years agosafe_asterisk: Cleanup additions to r415132.
Walter Doekes [Mon, 9 Jun 2014 12:12:25 +0000 (12:12 +0000)]
safe_asterisk: Cleanup additions to r415132.

* Replaced a stray echo that should've been a message call in
  safe_asterisk. This replaces a conditional log message by a slightly
  different message. Please update your log parsing scripts.
* Made the $NOTIFY mail Subject more verbose by adding the machine name
  and exitstatus.

(Note that a 'make install' still won't overwrite your old safe_asterisk
if it exists. See ASTERISK-21965.)

ASTERISK-23492 #close

Merged revisions 415521 from

Merged revisions 415522 from

Merged revisions 415523 from

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

6 years agoautoservice: stop thread on graceful shutdown
Corey Farrell [Mon, 9 Jun 2014 03:50:45 +0000 (03:50 +0000)]
autoservice: stop thread on graceful shutdown

This change adds thread shutdown to autoservice for graceful shutdowns only.
ast_register_cleanup is backported to 1.8 to allow this.  The logger callid
is also released on shutdown in 11+.

ASTERISK-23827 #close
Reported by: Corey Farrell

Merged revisions 415463 from

Merged revisions 415464 from

Merged revisions 415465 from

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

6 years agobridges/bridge_native_rtp: Reconfigure bridge on removal of framehook
Matthew Jordan [Sun, 8 Jun 2014 18:12:53 +0000 (18:12 +0000)]
bridges/bridge_native_rtp: Reconfigure bridge on removal of framehook

This patch is a re-do of r414122.

When r414122 was merged, a major problem with it was uncovered. UNBRIDGE soft
hangup flags have a catastrophic effect on the pbx core if they leak out from
the bridge layer: the channel gets hung up. With the number of threads
involved in a blind transfer, and with the initial patch, it was likely that
this would occur. This caused a large number of test failures

This patch is nearly identical with the one proposed in r414122, save for the
following changes:
 - We explicitly clear the UNBRIDGE flag when setting an after goto on a
   channel in a bridge
 - Defensively, if we encounter an UNBRIDGE flag in the pbx core, we handle it

Merged revisions 415443 from

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

6 years agobridge.h: Remove redundant struct ast_bridge_channel forward declaration.
Richard Mudgett [Sat, 7 Jun 2014 00:42:50 +0000 (00:42 +0000)]
bridge.h: Remove redundant struct ast_bridge_channel forward declaration.

Merged revisions 415427 from

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

6 years agochan_sip: Fix order of variables specified in SIPNotify action
Jonathan Rose [Fri, 6 Jun 2014 21:44:16 +0000 (21:44 +0000)]
chan_sip: Fix order of variables specified in SIPNotify action

Prior to this patch, sequential variables would be ordered in reverse
from the order specified in the manager action.


Merged revisions 415359 from

Merged revisions 415390 from

Merged revisions 415410 from

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

6 years agocore uri: Custom uri parsing error when no query parameters
Kevin Harwell [Fri, 6 Jun 2014 20:45:05 +0000 (20:45 +0000)]
core uri: Custom uri parsing error when no query parameters

If using the custom URI parsing code (not external uriparser lib) and there
was no query parameters the resulting pointer would be NULL and then an
attempt was made to subtract from it.  The pointer is now set to a valid
value if there is no query parameter(s).

Also, in the 'ast_uri_make_host_with_port' function when setting the terminator
on the resulting string it was writing it one past the end of allocated memory.
It now writes the string terminator appropriately.

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

6 years agoPJSIP: Remove premature write of raw formats
Kinsey Moore [Fri, 6 Jun 2014 19:13:08 +0000 (19:13 +0000)]
PJSIP: Remove premature write of raw formats

Currently, there are situations that can occur when using chan_pjsip
and certain dialplan applications (notably ChanSpy()) that can cause
the channel to get no audio with scrolling warnings about format
mismatches. This is caused by a failure to update translation paths on
a mid-call native format update since the raw formats have already
been updated by res_pjsip_sdp_rtp.c in set_caps(). Removing the
premature raw format updates allows the translation paths to be setup
correctly and the raw read and write formats with them.

AFS-63 #close

Merged revisions 415342 from

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

6 years agoSplit astobj2.c into more maintainable components.
George Joseph [Fri, 6 Jun 2014 14:12:57 +0000 (14:12 +0000)]
Split astobj2.c into more maintainable components.

Split astobj2.c into the following files to improve maintainability.

astobj2.c - object primitives, object primitive misc and initialization code.
astobj2_private.h - internal object declarations needed by the containers.
astobj2_container.c - generic conainer and container misc code.
astobj2_container_hash.c - hash container specific code.
astobj2_container_rbtree.c - rbtree container specific code.
astobj2_container_private.h - generic container definitions and rtti prototypes.

Merged revisions 415317 from

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

6 years agoconfigs/cli_aliases.conf: Two new aliases, plus enhancements for context names.
Rusty Newton [Fri, 6 Jun 2014 12:49:38 +0000 (12:49 +0000)]
configs/cli_aliases.conf: Two new aliases, plus enhancements for context names.

Changed naming of included alias templates to avoid confusion between version names. For example, asterisk12 was for asterisk 1.2, so I changed it to asterisk_1dot2, so that later we can use asterisk_12 for Asterisk 12.

Added alias for "features reload" to the template for Asterisk 11 style syntax template, as features reload was removed in 12, but you can still do "module reload features"

Added alias for "pjsip reload" to the friendly template. It is shorter than "module reload" and if some are like me; I constantly forget that reloading chan_pjsip doesn't parse config. Remembering "pjsip reload" is just easier.

ASTERISK-23654 #close
ASTERISK-23654 #comment Fixed by adding two new aliases and enhancements for context names.


Merged revisions 415301 from

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

6 years agoconfig: Fix indentation and missing curlies in config_text_file_load().
Richard Mudgett [Thu, 5 Jun 2014 19:04:02 +0000 (19:04 +0000)]
config: Fix indentation and missing curlies in config_text_file_load().

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

6 years agoconfig: Fix config files not reloading when only an included file changes.
Richard Mudgett [Thu, 5 Jun 2014 18:02:08 +0000 (18:02 +0000)]
config: Fix config files not reloading when only an included file changes.

The twisted logic determining if a config file should be reloaded was
mostly broken and disabled.  The incorrect test that ASTERISK-23383 fixed
actually reenabled the broken logic.  The incorrect test was causing the
timestamp to always be cleared which caused config files with includes to
always be reloaded.

* Made wildcard includes always cause a reload.  Determining if a file was
deleted cannot be determined without restructuring the cache to determine
if any files are missing from the last files actually loaded.  Also
without refactoring config_text_file_load(), the glob loop couldn't check
more than one file for changes anyway.

* Made remove the cache entry if the file no longer exists when trying to
get its timestamp or it is no longer a regular file.  This fixes the
corner case where the file was loaded, then deleted, then the config
reloaded, then the file restored with the same timestamp, and then the
config reloaded again.

* Made remove the cache entry include list when actually loading the file.
This gets rid of any stale includes the file had from the last time the
file was loaded.

ASTERISK-23683 #close
Reported by: tootai


Merged revisions 415225 from

Merged revisions 415229 from

Merged revisions 415230 from

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

6 years agores_http_websocket: Create a websocket client
Kevin Harwell [Thu, 5 Jun 2014 17:22:35 +0000 (17:22 +0000)]
res_http_websocket: Create a websocket client

Added a websocket server client in Asterisk. Asterisk has a websocket server,
but not a client. The ability to have Asterisk be able to connect to a websocket
server can potentially be useful for future work (for instance this could allow
ARI to connect back to some external system, although more work would be needed
in order to incorporate that).

Also a couple of things to note - proxy connection support has not been
implemented and there is limited http response code handling (basically, it is
connect or not).

Also added an initial new URI handling mechanism to core.  Internet type URI's
are parsed into a data structure that contains pointers to the various parts of
the URI.

(closes issue ASTERISK-23742)
Reported by: Kevin Harwell

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

6 years agoapp_confbridge: Allow muting of users waiting to enter a ConfBridge
Matthew Jordan [Thu, 5 Jun 2014 14:49:20 +0000 (14:49 +0000)]
app_confbridge: Allow muting of users waiting to enter a ConfBridge

Prior to this patch, users waiting to enter a ConfBridge were not considered
when muted via the CLI or via AMI. Instead, a confusing message would be
emitted stating that the channel did not exist.

This patch allows a user to be muted when waiting to enter a ConfBridge
conference. This is equivalent to start when muted, only toggled via the CLI
or AMI.


#ASTERISK-23824 #close
  rb3582.patch uploaded by tm1000 (License 6524)

Merged revisions 415206 from

Merged revisions 415207 from

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

6 years agoPJSIP: Send initial connected line information
Kinsey Moore [Thu, 5 Jun 2014 11:59:09 +0000 (11:59 +0000)]
PJSIP: Send initial connected line information

This makes chan_pjsip send connected line information when it is called
so that connected line information is available on the connected

(closes issue DPMA-442)
Reported by: John Bigelow

Merged revisions 415191 from

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

6 years agosafe_asterisk: Cleanup and debian compatibility.
Walter Doekes [Wed, 4 Jun 2014 20:16:40 +0000 (20:16 +0000)]
safe_asterisk: Cleanup and debian compatibility.

Cleans up the safe_asterisk script and adds the ASTSAFE_FOREGROUND
option that allows the debian asterisk init script to capture the
right pid.

* Drop the vim #modeline which wasn't used. Use test consistently
  without the odd configure xno syntax. Double quote all paths.
  General cleanup.
* Don't output message()s to the console but only to TTY if set.
* Allow TTY to be "no" as well as empty (debian compatibility with
* Add option to export ASTSAFE_FOREGROUND=1 from the init script
  that calls this to disable backgrounding. Debian uses a similar
  method in debian/patches/safe_asterisk-nobg).

ASTERISK-23492 #close

Merged revisions 415132 from

Merged revisions 415171 from

Merged revisions 415172 from

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

6 years agochan_pjsip: Add debug in RTP Engine glue callback
Matthew Jordan [Wed, 4 Jun 2014 14:13:07 +0000 (14:13 +0000)]
chan_pjsip: Add debug in RTP Engine glue callback

This patch adds some debug statements that aid with determining why a direct
media request may or may not be initiated.

Merged revisions 415117 from

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

6 years agores_pjsip_session: Add debug statement for session refreshes
Matthew Jordan [Wed, 4 Jun 2014 14:12:00 +0000 (14:12 +0000)]
res_pjsip_session: Add debug statement for session refreshes

This small patch adds a debug level 3 statement indicating how a session
refresh is being sent - either as a re-INVITE or as an UPDATE - and where
the session refresh is going.

Merged revisions 415115 from

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

6 years agoapp_confbridge: Correct verification of conference name length
Corey Farrell [Wed, 4 Jun 2014 07:27:21 +0000 (07:27 +0000)]
app_confbridge: Correct verification of conference name length

Conference names were not checked for maximum length, allowing unexpected
behaviour.  This change adds checking to ensure the maximum length is not
exceeded.  The maximum length is also changed from 32 to AST_MAX_EXTENSION.

ASTERISK-23035 #close
Reported by: Iñaki Cívico
Tested by: Iñaki Cívico
    confbridge-enforce_max-1.8.patch uploaded by coreyfarrell (license 5909)
    confbridge-enforce_max-11up.patch uploaded by coreyfarrell (license 5909)

Merged revisions 415060 from

Merged revisions 415066 from

Merged revisions 415078 from

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

6 years agofunc_odbc: Fix fixed size buffers fix (r414968).
Walter Doekes [Tue, 3 Jun 2014 07:36:42 +0000 (07:36 +0000)]
func_odbc: Fix fixed size buffers fix (r414968).

The change that removed the fixed size buffers in odbc-related code --
removing arbitrary column width limits -- was incomplete. This change
adds: no segfault on writesql without insertsql and return value checks
after strdup.

While I was in the vicinity I cleaned up the linefeeds in the odbc
function descriptions, moved some code for clarity, removed some blobs
and noted (but didn't fix) that the 'odbc write ... exec' CLI command
doesn't behave as the dialplan equivalent when insertsql= is used.

ASTERISK-23582 #close

Merged revisions 414997 from

Merged revisions 414998 from

Merged revisions 414999 from

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

6 years agobridge_native_rtp: Take the bridge type choice of both channels into account.
Joshua Colp [Sun, 1 Jun 2014 15:32:34 +0000 (15:32 +0000)]
bridge_native_rtp: Take the bridge type choice of both channels into account.

The bridge_native_rtp module currently uses the bridge result of the first
channel that joins a bridge as the ultimate result. This means that if the
first channel has direct media enabled but the second does not a direct
media bridge will still occur.

This change makes it so that both sides are taken into account. If either
side forbids the bridge or responds with a local bridge result then
either a generic or local bridge occurs.

ASTERISK-23541 #close
Reported by: Justin E


Merged revisions 414975 from

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

6 years agoPJSIP: Prevent crash on blind transfer
Kinsey Moore [Fri, 30 May 2014 14:53:44 +0000 (14:53 +0000)]
PJSIP: Prevent crash on blind transfer

Blind transfers don't go too well with NULL channels which can occur if
the channel has already been transferred away.

(closes issue ASTERISK-23718)
Reported by: Jonathan Rose

Merged revisions 414948 from

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

6 years agoTALK_DETECT: A channel function that raises events when talking is detected
Matthew Jordan [Fri, 30 May 2014 12:42:57 +0000 (12:42 +0000)]
TALK_DETECT: A channel function that raises events when talking is detected

This patch adds a new channel function TALK_DETECT that, when set on a
channel, causes events indicating the start/stop of talking on a channel to be
emitted to both AMI and ARI clients.

The function allows setting both the silence threshold (the length of silence
after which we decide no one is talking) as well as the talking threshold (the
amount of energy that counts as talking). Parameters can be updated on a channel
after talk detection has been enabled, and talk detection can be removed at
any time.

The events raised by the function use a nomenclature similar to existing AMI/ARI
For AMI: ChannelTalkingStart/ChannelTalkingStop
For ARI: ChannelTalkingStarted/ChannelTalkingFinished


#ASTERISK-23786 #close
Reported by: Matt Jordan

Merged revisions 414934 from

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

6 years agomain/config.c: AMI action UpdateConfig EmptyCat clears all categories
Matthew Jordan [Fri, 30 May 2014 12:05:33 +0000 (12:05 +0000)]
main/config.c: AMI action UpdateConfig EmptyCat clears all categories

When invoking UpdateConfig AMI action with Action set to EmptyCat, Asterisk
will make all categories empty in the config but the one requested with a
Cat variable. This is due to a bug in ast_category_empty (main/config.c)
that makes an incorrect comparison for a category name.

This patch corrects the comparison such that only the requested category
is cleared.


#ASTERISK-23803 #close
Reported by: zvision
  manager.c.diff uploaded by zvision (License 5755)

Merged revisions 414880 from

Merged revisions 414881 from

Merged revisions 414882 from

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

6 years agoPBX: Prevent incorrect hint parsing
Kinsey Moore [Thu, 29 May 2014 18:51:41 +0000 (18:51 +0000)]
PBX: Prevent incorrect hint parsing

Dynamic and pattern matching hints should not be checked for their last
known state until they are instantiated by subscribers.

(closes issue AFS-56)
Reported by: John Hardin
Patch AFS-56-pbx.diff submitted by Matt Jordan (license 6283)

Merged revisions 414813 from

Merged revisions 414859 from

Merged revisions 414860 from

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

6 years agoLogger/CLI/etc.: Fix some aesthetic issues; reduce chatty verbose messages
Matthew Jordan [Wed, 28 May 2014 22:54:12 +0000 (22:54 +0000)]
Logger/CLI/etc.: Fix some aesthetic issues; reduce chatty verbose messages

This patch addresses some aesthetic issues in Asterisk. These are all just
minor tweaks to improve the look of the CLI when used in a variety of
settings. Specifically:
 * A number of chatty verbose messages were removed or demoted to DEBUG
   messages. Verbose messages with a verbosity level of 5 or higher were -
   if kept as verbose messages - demoted to level 4. Several messages
   that were emitted at verbose level 3 were demoted to 4, as announcement
   of dialplan applications being executed occur at level 3 (and so the
   effects of those applications should generally be less).
 * Some verbose messages that only appear when their respective 'debug'
   options are enabled were bumped up to always be displayed.
 * Prefix/timestamping of verbose messages were moved to the verboser
   handlers. This was done to prevent duplication of prefixes when the
   timestamp option (-T) is used with the CLI.
 * Verbose magic is removed from messages before being emitted to
   non-verboser handlers. This prevents the magic in multi-line verbose
   messages (such as SIP debug traces or the output of DumpChan) from
   being written to files.
 * _Slightly_ better support for the "light background" option (-W) was
   added. This includes using ast_term_quit in the output of XML
   documentation help, as well as changing the "Asterisk Ready" prompt to
   bright green on the default background (which stands a better chance of
   being displayed properly than bright white).


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

6 years agopjsip.conf: privkey_file should be priv_key_file, mediaencryption=yes should be media...
Rusty Newton [Wed, 28 May 2014 20:53:05 +0000 (20:53 +0000)]
pjsip.conf: privkey_file should be priv_key_file, mediaencryption=yes should be mediaencryption=sdes

privkey_file was missed in the snake case update. An example included an invalid value for the mediaencryption option.

Merged revisions 414780 from

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

6 years agoAMI/ARI: Update version numbers
Matthew Jordan [Wed, 28 May 2014 17:46:37 +0000 (17:46 +0000)]
AMI/ARI: Update version numbers

Update the semantic versioning of ARI to 1.3.0 and AMI to 2.3.0 to account for
backwards compatible changes going from 12.2.0 to 12.3.0.

Merged revisions 414765 from

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

6 years agoast-db-manage/cdr/ Don't fail if a config file can't be loaded
Matthew Jordan [Wed, 28 May 2014 17:44:49 +0000 (17:44 +0000)]
ast-db-manage/cdr/ Don't fail if a config file can't be loaded

When generating SQL files via the repotools script, a
configuration object is used programatically with SQLAlechemy, as opposed to
a configuration file. This patch ignores failures to interpret a config file,
as ... there isn't one in this case.

Merged revisions 414763 from

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

6 years agores_pjsip_session: Fix leaked video RTP ports.
Richard Mudgett [Wed, 28 May 2014 16:56:07 +0000 (16:56 +0000)]
res_pjsip_session: Fix leaked video RTP ports.

Simply enabling PJSIP to negotiage a video codec (e.g., h264) would leak
video RTP ports if the codec were not negotiated by an incoming call.

* Made add_sdp_streams() associate the handler with the media stream if
the handler handled the media stream.  Otherwise, when the
ast_sip_session_media object was destroyed it didn't know how to clean up
the RTP resources.

* Fixed sdp_requires_deferral() associating the handler with the media
stream when deciding if the SDP processing needs to be deferred for T.38.
Like the leaked video RTP ports, the T.38 handler needs to clean up
allocated resources from deciding if SDP processing needs to be deffered.

* Cleaned up some dead code in handle_incoming_sdp() and

ASTERISK-23721 #close
Reported by: cervajs


Merged revisions 414749 from

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

6 years agoapp_agent_pool: Return to dialplan if the agent fails to ack the call.
Richard Mudgett [Wed, 28 May 2014 16:34:47 +0000 (16:34 +0000)]
app_agent_pool: Return to dialplan if the agent fails to ack the call.

Improvements to the agent pool functionality.

* AgentRequest no longer hangs up the caller if the agent fails to connect
with the caller.  It now continues in the dialplan.

* AgentRequest returns AGENT_STATUS set to NOT_CONNECTED if the agent
failed to connect with the call.  Most likely because the agent did not
acknowledge the call in time or got disconnected.

* The agent alerting play file configured by the agent.conf custom_beep
option can now be disabled by setting the option to an empty string.  The
agent is effectively alerted to a call presence when MOH stops.

* Fixed bridge reference leak when the agent connects with a caller.

ASTERISK-23499 #close
Reported by: Matt Jordan


Merged revisions 414747 from

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

6 years agores_config_odbc: Use dynamically sized buffers to store row data so values do not...
Joshua Colp [Wed, 28 May 2014 11:37:50 +0000 (11:37 +0000)]
res_config_odbc: Use dynamically sized buffers to store row data so values do not get truncated.

ASTERISK-23582 #close
ASTERISk-23582 #comment Reported by: Walter Doekes


Merged revisions 414693 from

Merged revisions 414694 from

Merged revisions 414695 from

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

6 years agochan_unistim: Unlock mutex in rare OOM condition.
Walter Doekes [Wed, 28 May 2014 09:43:53 +0000 (09:43 +0000)]
chan_unistim: Unlock mutex in rare OOM condition.

#ASTERISK-23792 #close
Reported by: Peter Whisker


Merged revisions 414677 from

Merged revisions 414678 from

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

6 years agochan_sip: Start session timer at 200, not at INVITE.
Walter Doekes [Tue, 27 May 2014 21:23:16 +0000 (21:23 +0000)]
chan_sip: Start session timer at 200, not at INVITE.

Asterisk started counting the session timer at INVITE while the other
end correctly started at 200. This meant that for short session-expiries
(90 seconds) combined with long ringing times (e.g. 30 seconds), asterisk
would wrongly assume that the timer was hit before the other end thought
it was time to send a session refresh. This resulted in prematurely
ended calls.

This changes the session timer to start counting first at 200 like RFC
says it should.

(Also removed a few excess NULL checks that would never hit, because if
they did, asterisk would have crashed already.)

ASTERISK-22551 #close
Reported by: i2045


Merged revisions 414620 from

Merged revisions 414628 from

Merged revisions 414636 from

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

6 years agores_config_odbc: Fix old and new ast_string_field memory leaks.
Walter Doekes [Tue, 27 May 2014 20:03:00 +0000 (20:03 +0000)]
res_config_odbc: Fix old and new ast_string_field memory leaks.

The ODBC realtime driver uses ^NN parameter encoding to cope with the
special meaning of the semi-colon. A semi-colon in a field is
interpreted as if the key was supplied twice, something which isn't
otherwise possible with fixed database columns. E.g. allow=alaw;ulaw
is parsed as allow=alaw and allow=ulaw. A literal semi-colon is
rewritten to ^3B when stored in the database.

The module uses a stringfield to efficiently store the encoded
parameters. However, this stringfield wasn't always freed in some
off-nominal cases.

Commit r413241 fixed initialization so the encoding for INSERT and
DELETE queries wouldn't crash. (Only SELECTs and UPDATEs worked
apparently.) But that commit forgot the frees. This change cleans
that up.


Merged revisions 414564 from

Merged revisions 414565 from

Merged revisions 414566 from

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